以下似乎是一个典型的用例:您使用显示登录屏幕的 LoginViewController 启动应用程序。用户成功登录后,您希望显示应用程序的主视图(我们称之为 MainViewController)。
您不想将 LoginViewController 放入 UINavigationController 并随后将 MainViewController 推到它上面,因为没有理由将 LoginViewController 保持在堆栈底部,因为它永远不会再次显示。此外,在应用程序的后续启动中,您将确定您已经获得了某种登录令牌,并且根本不会显示 LoginViewController,因此从启动到启动导航控制器堆栈会出现不一致.
出于同样的原因,您也不想从 LoginViewController 模态显示 MainViewController(如果它是模态的,它将保持 LoginViewController 加载在后面)。
您也不想将窗口的 rootViewController 设置为 MainViewController(之前设置为 LoginViewController),因为这不允许您进行转换。
我想要一些关于我上面的逻辑是否有缺陷的反馈,实际上这些场景之一是正确的吗?或者如果没有,其他人在为这种情况做些什么?