如何根据条件选择rootViewController进行App启动?

时间:2015-08-13 07:56:51

标签: ios iphone xcode segue

我有一个应用程序,当我第一次安装应用程序时,我会显示我的第一个视图控制器。在第二次运行之后,我不希望第一个视图再显示。

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

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

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

1 个答案:

答案 0 :(得分:2)

您需要在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.
    }
}

-application: didFinishLaunchingWithOptions:

中调用上述方法

你已经完成了。

编辑您的评论..

黑屏表示您尚未正确实例化ViewController。不要用

[[YourController alloc] init];

使用

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