在视图控制器之间来回切换
Posted
技术标签:
【中文标题】在视图控制器之间来回切换【英文标题】:segue back and forth between viewcontrollers 【发布时间】:2015-02-25 13:20:54 【问题描述】:我正在我的应用中实现单点登录(用户只需登录一次)。
但用户可以根据需要退出。
我将用用例流程解释我的问题。
流程:
-
loginViewController -> 用户按下登录 -> 我转到 appNavigationController(HomePageViewController 是根 viewController)
HomePageViewController -> 用户退出应用程序 -> 我转回登录页面
用户重新登录。
现在我有一个问题。
我收到一个错误:
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】:您的 ViewController 需要如下所示:
UINavigationController --(rootViewController)--> loginViewController --(Segue)--> HomePageViewController
或者您可以执行以下操作:
UITabViewController:
viewController1 : 登录视图控制器
viewController2 : UINavigationController --(rootViewController)--> 主页视图控制器
不,一旦用户登录,您可以导航到 viewController2 Tab
并显示 HomePageViewController
一旦用户注销,您可以在viewController2 Tab
中popToRootViewController
并切换到viewController1 Tab
以显示loginViewController
【讨论】:
我可以有一个不带标签按钮的 tabViewController 吗? 是的...你可以隐藏它们 很高兴为您提供帮助...查看 UITabBarController 文档developer.apple.com/library/ios/documentation/UIKit/Reference/… 我可以隐藏情节提要中的标签吗?它将标签添加到我所有的视图控制器并弄乱了用户界面 是的,在 StoryBoard 中选择您的 viewController 并打开“属性检查器”。您可以通过将下拉菜单更改为“无”来显示和隐藏底栏【参考方案2】:您的应用中是否只有一个 1 navigationController。我不这么认为。 如果您想要一个简单的来回切换,应该只有一个 NavigationController。
否则,如果您确实有 2 个或更多 NavigationController,那么您需要以编程方式将新 NavigationController 添加到 window。
【讨论】:
我只有 1 个 navigationController。 登录页面是一个视图控制器,应用程序的其余部分在一个导航控制器中。在 appDelegate 中,我检查用户是否已登录,如果他是我将窗口设置为具有 navigationController 如果 loginviewcontroller 后面没有导航控制器,那么你不能“继续”回到它。您的程序必须以导航控制器开始。以上是关于在视图控制器之间来回切换的主要内容,如果未能解决你的问题,请参考以下文章