多个导航控制器

时间:2016-01-21 03:27:03

标签: ios objective-c

我无法组织应用的注册/登录流程。我目前有应用程序的故事板入口点指向导航控制器。在AppDelegate.m中,如果用户未登录,则为:

    SignUpViewController *signUpViewController = [[SignUpViewController alloc] init];
    self.navController = [[UINavigationController alloc] initWithRootViewController:signUpViewController];
    self.window.rootViewController = self.navController;
    [self.window makeKeyAndVisible];

这会创建“注册”导航控制器。

我试图将此SignUpViewController与导航控制器一起弹出以进入应用程序的初始屏幕(导航控制器最初在故事板中指出),但我没有取得任何成功。

2 个答案:

答案 0 :(得分:1)

当您使用故事板(因此在那里有一个初始视图控制器)时,iOS正在为您做的是将window.rootViewController设置为具有此初始视图控制器标志的视图控制器

在您的代码中,替换 SignUpViewController嵌入UINavigationController的根视图控制器,这就是为什么你实际上无法从中弹出的原因以前没有其他视图控制器在堆栈上。

一种解决方案可能是在第一个视图控制器上添加一个逻辑,用于识别用户是否已登录,如果不是您推送(或模拟,如果您将)SignUpViewController。我希望有所帮助。

答案 1 :(得分:1)

您已将self.navController设置为窗口的rootViewController。为了能够完成你想要的任务,你可以做其中的一件事:

  • 以编程方式将故事板中最初指向的导航控制器设置为rootViewController。然后将SignupViewController呈现为模态。

  • 从故事板中的初始视图控制器而不是应用程序委托中呈现SignupViewController(作为模式)