OStack程序员社区-中国程序员成长平台

标题: ios - 如何根据条件为 App 启动选择 rootViewController? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:58
标题: ios - 如何根据条件为 App 启动选择 rootViewController?

我有一个应用程序,在第一次安装应用程序时我会显示我的第一个 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4