如何弹出到另一个堆栈上存在的视图控制器?

时间:2016-03-14 22:50:48

标签: ios swift uinavigationcontroller

方案

我目前正在一个嵌入在导航控制器中的视图控制器上,为了这个例子,让我们调用这个导航控制器Hendrix。我想要弹出到另一个视图控制器,它嵌入在另一个导航控制器中,让我们调用该导航控制器Bowie

所以我有一些看起来像这样的东西:

Stuff - Hendrix - VC - TargetVC - Bowie - VC - VC - CurrentVC

问题

当然,你想查看你的堆栈,找到你的视图控制器,然后弹出它,但CurrentVC上存在Bowie,而TargetVC上存在Hendrix他们是分开的。

1 个答案:

答案 0 :(得分:3)

不确定这是否完全适合您的情况,但请在28:30时查看What's New in Storyboards - WWDC 2015

在他们的例子中,有一个期刊导航控制器和一个照片导航控制器。在29:00给出的情况是用户想要从照片导航控制器堆栈上的照片视图控制器返回到日志导航控制器堆栈上的日志表视图控制器。这是通过单个segue完成的。

通过实施childViewControllerContainingSegueSource(_:),它知道您从哪个视图控制器开始(在您的情况下是Hendrix堆栈上的View Controller)。然后,它将以递归方式查看Hendrix堆栈,然后查看包含两个导航控制器的任何父控制器。然后它会找到你的其他导航控制器(Bowie),并通过它的孩子看。如果找到可以执行展开segue的View Controller,则找到目标并执行segue。

我不完全确定您在案件中做了什么,但希望有一个包含两个导航控制器的父VC。