关闭双模态呈现视图控制器的父视图控制器

时间:2015-11-01 01:56:56

标签: ios swift uiviewcontroller uinavigationcontroller uimodalpresentationstyle

我有当前设置->是模式演示文稿(presentViewController()):

ViewController A -> NavigationController B:
    ViewController C
    ViewController D -> ViewController E

我目前在ViewController E内。我想解雇所有模态呈现的视图控制器,以便我可以回到ViewController A。无论我尝试ViewController E,(dismissViewController()selfparentViewControllerpresentViewControllernavigationController),我都能轻易解雇ViewController E但不能解除ViewController B及其所有子视图控制器。在我看来,当ViewController E被解除时,我已经失去了对它的所有引用,ViewController D(导航控制器NavigationController B)的子视图控制器仍然可见。

非常感谢任何解雇ViewController ENavigationController B以及所有子视图控制器的帮助。

1 个答案:

答案 0 :(得分:1)

您正在寻找的东西称为展开segue。我不知道在故事板之外有任何方法可以做到这一点,但基本上你会设置从ViewControllerEViewControllerA的放松信号,然后在E时,像你一样执行一个segue通常:self.performSegue('UnwindSegue', sender: self)

This是关于整个主题的非常好的文章。基本上发生的是视图控制器堆栈一旦触发就一直展开到展开segue的退出点,这样你就可以从E转到A没问题。您还可以通过应用程序进行多次展开细分,只需确保为其提供标识符即可。

这在注销等场景中非常有用,其中用户可能是五个或六个视图控制器,但您的应用程序有一个侧边菜单,可以在任何时候用它们注销。您可以一直放松到第一个视图控制器。