如何回到第一个视图

时间:2015-04-01 23:59:40

标签: ios swift uinavigationcontroller

Sample Storyboard

假设我有如上所述的设置,如何回到第一个视图(例如带标签的那个)?

我问这个是因为我不确定是否有一个特殊的原因会导致多个导航控制器设置类似于上面。

我遇到了这个问题,因为popToRootViewController只会返回到该navi控制器的第一个视图。例如。如果我在第二个导航控制器的视图,我运行popToViewController,它只会返回到第二个导航控制器的第一个视图控制器。我已经通过删除其他导航控制器解决了这个问题,但我的好奇心必须得到解决。

2 个答案:

答案 0 :(得分:1)

正如我在评论中所述,第二视图控制器几乎肯定是不必要的(但这并非完全必要),所以最好的选择是最简单的方法就是删除第二个导航控制器。

尽管如此,如何使用现有设置返回到原始视图控制器将在很大程度上取决于您如何到达当前视图控制器。

如果第二个导航控制器被推到第一个导航控制器的导航堆栈,那么从第二个视图控制器之后的任何视图,可以执行以下操作:

self.navigationController?.navigationController?.popToRootViewControllerAnimated(true)

否则,如果第二个导航控制器是以模态方式呈现的,您可以使用以下代码从其导航堆栈中的任何视图控制器中将其关闭:

self.navigationController?.dismissViewControllerAnimated(true, completion: nil)

记住UINavigationControllerUIViewController的子类是很重要的,因此,我们可以调用后者的任何方法也可以在前者上调用。

答案 1 :(得分:-1)

一种简单的(Hacky)方法是维护指向第一个导航控制器的全局指针(可能在AppDelegate或.pch文件中),无论何时你想要你的根控制器,你都可以说dismissViewController:animated ,然后popToRootViewController

应该适用于所有情况。