我很久以来一直在努力解决这个问题,所以我终于放弃了试图找到答案并决定马上问一下。
在我的应用上,我有一个用户登录页面。该应用程序有一个TabBarViewController,其中包含一些NavigationControllers项目。
我最后的努力是将登录屏幕嵌入NavigationBarController并使其成为初始视图控制器,如下图所示。
当应用程序启动时,如果用户登录LogInViewController'segues'到TabBarController,一切都很好。当用户在ProfileViewController中注销时,此ViewController中有一个segue'segueing'到初始视图控制器。
另一方面,如果没有用户登录,则LogInViewController会显示一个视图,以便用户可以插入用户名和密码。如果凭据正确,则LogInViewController'segues'到TabBarController。问题是,此时,即使应用程序仍然正常工作,我也会收到以下警告:
警告:在演示文稿正在进行时,尝试在UINavigationController:0xa526370上显示TabBarViewController:0xa19a670!
所以我认为这不是处理所有LogIn / LogOut进程的最佳方法。
我的问题是,我应该在哪里将LogInScreen放在层次结构中? 如果我的布局/层次结构是正确的,那么如何使警告消失?
答案 0 :(得分:1)
您应该将主屏幕设置为rootViewController
,并且在应用程序启动或变为活动状态后,您可以检查用户是否已登录,如果没有,则显示登录屏幕模式,它将避免混乱与其他NavigationController
或TabBarController
替代可能是将ViewControllers
放在MutbaleArray
中,并根据您要显示的视图设置当前的TabBarController
索引?如果您不希望在用户登录后显示LoginScreen,只需将其从MutableArray
中移除,查看我的回答here,这可能有助于您的事业