• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何根据条件为 App 启动选择 rootViewController?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:58:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个应用程序,在第一次安装应用程序时我会显示我的第一个 View Controller 。第二次运行后,我不想再显示第一个 View 。

我已经保存了一个设置值,它告诉我应用程序之前是否运行过,如果有,那么我调用 performSegueWithIdentifier。

我不能在 viewDidLoad 中调用它,因为这不起作用,但如果我在 viewDidAppear 中调用它,那么我会在一瞬间看到第一个 View 。

在第一个 View 被处理之前,我可以在某个地方调用它吗?



Best Answer-推荐答案


您需要在 AppDelegate.m 中执行此操作。

检查应用之前是否启动过,并相应地设置您的 window rootViewController

-(void) setRootViewControllerByCheckingLoginStatus
{
    BOOL isUserLogin = [[NSUserDefaults standardUserDefaults] boolForKey"IS_USER_LOGGEDIN"];

    if (isUserLogin) {

        // Set your controller if user has logged in.
        YourController *yourController = [[YourController alloc] init]; // Or YourController *yourController = [storyBoard instantiateViewControllerWithIdentifier"YourControllerStoryBoardID"];
        self.window.rootViewController = yourController;
    }
    else
    {
      //set other controller if user is not logged in. Or just let it be what it is by default.
    }
}

在您的 -应用程序中调用上述方法: didFinishLaunchingWithOptions:

你就完成了。

编辑您的评论..

黑屏意味着你没有正确实例化你的 ViewController。不要使用

[[YourController alloc] init];

使用

 YourController *yourController = [storyBoard instantiateViewControllerWithIdentifier"YourControllerStoryBoardID"];

关于ios - 如何根据条件为 App 启动选择 rootViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982590/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap