2016-01-21 309 views
1

我在组织我的应用程序的注册/登录流程时遇到问题。我目前有应用程序的故事板入口点指向导航控制器。在AppDelegate.m如果用户没有记录有:多个导航控制器

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

这就造成了“签署”导航控制器。

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

+0

你尝试过通过该代码去除'SignUpViewController' '[signUpViewController.view removeFromSuperview];' – SeraZheng

回答

1

当您使用故事板(因此有一个有初始视图控制器)什么的iOS为你做的是设置window.rootViewController,使其与本初始视图控制器标志视图控制器。

在你的代码是更换用于嵌入UINavigationControllerSignUpViewController根视图控制器,这就是为什么你不能真正从中弹出是因为没有其他视图控制器以前在堆栈中。

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

1

您已经将self.navController设置为窗口的rootViewController。为了能够完成你想要的任务,你可以执行以下其中一项操作:

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

  • 当前从在故事板初始视图控制器,而不是在应用程序委托的SignupViewController(作为模态)