我有当前设置->
是模式演示文稿(presentViewController()
):
ViewController A -> NavigationController B:
ViewController C
ViewController D -> ViewController E
我目前在ViewController E
内。我想解雇所有模态呈现的视图控制器,以便我可以回到ViewController A
。无论我尝试ViewController E
,(dismissViewController()
与self
,parentViewController
,presentViewController
,navigationController
),我都能轻易解雇ViewController E
但不能解除ViewController B
及其所有子视图控制器。在我看来,当ViewController E
被解除时,我已经失去了对它的所有引用,ViewController D
(导航控制器NavigationController B)
的子视图控制器仍然可见。
非常感谢任何解雇ViewController E
和NavigationController B
以及所有子视图控制器的帮助。
答案 0 :(得分:1)
您正在寻找的东西称为展开segue。我不知道在故事板之外有任何方法可以做到这一点,但基本上你会设置从ViewControllerE
到ViewControllerA
的放松信号,然后在E
时,像你一样执行一个segue通常:self.performSegue('UnwindSegue', sender: self)
This是关于整个主题的非常好的文章。基本上发生的是视图控制器堆栈一旦触发就一直展开到展开segue的退出点,这样你就可以从E
转到A
没问题。您还可以通过应用程序进行多次展开细分,只需确保为其提供标识符即可。
这在注销等场景中非常有用,其中用户可能是五个或六个视图控制器,但您的应用程序有一个侧边菜单,可以在任何时候用它们注销。您可以一直放松到第一个视图控制器。