在viewcontrollers之间来回切换

时间:2015-02-25 13:20:54

标签: ios swift uiviewcontroller uinavigationcontroller segue

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

但是用户可以签出他是否愿意。

我将用一个用例流解释我的问题。

FLOW:

  1. loginViewController - >用户按下登录 - >我转到appNavigationController(HomePageViewController是root viewController)
  2. HomePageViewController - >用户退出应用程序 - >我将回到登录页面
  3. 用户签到。
  4. 现在我遇到了问题。

    我收到错误:

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

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

    有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您的ViewControllers需要如下所示:

  

UINavigationController - (rootViewController) - &gt; loginViewController    - (Segue公司) - &GT; HomePageViewController

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

UITabViewController:

  

viewController1:loginViewController

     

viewController2:UINavigationController - (rootViewController) - &gt;   HomePageViewController

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

一旦用户退出,您就可以popToRootViewController中的viewController2 Tab&amp;切换到viewController1 Tab以显示loginViewController

答案 1 :(得分:0)

您的应用中只有一个1 navigationController吗?我不这么认为。 如果你想来回一个简单的segue,应该只有一个NavigationController。

否则,如果你有2个或更多的NavigationControllers,那么你需要以编程方式将新的NavigationController添加到窗口。