1

我有当前的设置,其中->是模态演示(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

4

1 回答 1

1

您正在寻找的内容称为 unwind segue。我不知道在故事板之外有任何方法可以做到这一点,但基本上你会设置一个 unwind segue from ViewControllerEViewControllerA然后在 in 时E,像往常一样执行一个 segue:self.performSegue('UnwindSegue', sender: self)

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

这在诸如注销之类的场景中非常有用,其中用户可能有 5 或 6 个视图控制器,但您的应用程序有一个侧面菜单,他们可以在任何时候使用它来注销。您可以一直放松到第一个视图控制器。

于 2015-11-01T02:24:23.090 回答