在视图控制器之间来回切换

segue back and forth between viewcontrollers

我正在我的应用程序中实现单点登录(用户只需登录一次)。

但用户可以根据需要退出。

我将用用例流程解释我的问题。

流量:

  1. loginViewController -> 用户按下登录 -> 我转到 appNavigationController(HomePageViewController 是 root viewController)
  2. HomePageViewController -> 用户退出应用程序 -> 我返回登录页面
  3. 用户重新登录。

现在我有一个问题。

我得到一个错误:

Warning: Attempt to present <app.loginViewController: 0x15d559f00> on <app.homeViewController: 0x15d625660> whose view is not in the window hierarchy!

我不知道这是否是问题所在,但 navigationController 正在保存第一个 homeViewController 而不是清空堆栈 我试图在 viewDidDisappear 中弹出 homeViewController 它没有用,堆栈仍然保存第一个 homeViewController

有什么建议吗?

你的应用中是否只有一个 1 navigationController。我不这么认为。 如果您想要来回进行简单的转场,则应该只有一个 NavigationController。

否则,如果您有 2 个或更多 NavigationController,则需要以编程方式将新的 NavigationController 添加到 window。

您的 ViewController 需要如下所示:

UINavigationController --(rootViewController)--> loginViewController --(Segue)--> HomePageViewController

或者您可以执行以下操作:

UITabViewController:

viewController1 : loginViewController

viewController2 : UINavigationController --(rootViewController)--> HomePageViewController

不,用户登录后您可以导航到 viewController2 Tab 并显示 HomePageViewController

一旦用户注销,您可以在 viewController2 TabpopToRootViewController 并切换到 viewController1 Tab 以显示 loginViewController