我已经为此苦苦挣扎了很长时间,所以我最终放弃了寻找答案并决定立即提问。
在我的应用程序上,我有一个用户登录页面。该应用程序有一个 TabBarViewController,其项目中有一些 NavigationController。
我最后的努力是将登录屏幕嵌入到 NavigationBarController 中,并使其成为初始 View Controller ,如下图所示。
当应用程序启动时,如果用户登录 LogInViewController 'segues' 到 TabBarController,一切都很好。当用户在 ProfileViewController 中注销时,此 ViewController 中将有一个“segueing”到初始 View Controller 。
另一方面,如果没有用户登录,LogInViewController 会呈现一个 View ,以便用户可以插入用户名和密码。如果凭据正确,LogInViewController 将“segues”到 TabBarController。问题是,此时,即使应用程序仍然运行良好,我也会收到以下警告:
Warning: Attempt to present TabBarViewController: 0xa19a670 on UINavigationController: 0xa526370 while a presentation is in progress!
所以我认为这不是处理所有登录/注销过程的最佳方法。
我的问题是,我应该将 LogInScreen 放在层次结构中的哪个位置? 如果万一我的布局/层次结构是正确的,如何使警告消失?
最佳答案
您应该将主屏幕设置为您的rootViewController
,并且一旦您的应用程序启动或变为事件状态,您可以检查用户是否登录,如果没有,则以模态方式显示登录屏幕,它将避免与其他 NavigationController
或 TabBarController
另一种方法是将所有 ViewControllers
放入 MutbaleArray
中,并根据要显示的 View 设置 TabBarController
的当前索引?如果您不想在用户登录后显示登录屏幕,只需将其从 MutableArray
中删除,请检查我的答案 here ,这可能对你的事业有帮助
关于ios - 如何在 Xcode 上管理登录和注销过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115155/