当你有多个调用它的ViewController时,你如何使用unwind segue

时间:2018-04-26 15:22:38

标签: ios swift uistoryboardsegue unwind-segue

我最近开始学习iOS / Swift,并想知道如何使用unwind segue。

假设以下视图控制器A,B,C,E,F,X,BB,BBB

C -> A -> E
C -> B -> BB -> E
C -> B -> BBB -> E
C -> D -> E
F -> X -> E

如何使用展开segue从E返回C或B或D?

注意:在ViewController E中,只有一个Back按钮。

我尝试过以下解决方案:

// Add this method in C, B, and D view controller
@IBAction func unwindFromE(sender: UIStoryboardSegue) {}

这似乎可以解决一些问题,但为什么它会退回到 C F - > X - > E 即使在视图控制器F / X中,也没有unwindFromE方法。

1 个答案:

答案 0 :(得分:1)

正如您所发现的,您可以在多个viewControllers中实现展开目标@IBAction,iOS会在调用链上找到它。这允许viewController E返回给任何调用它的人,只要它们实现目标函数unwindFromE

如果调用堆栈为EC展开返回F->X->E,则当CF由viewControllers控制时,会发生这种情况相同的UITabBarController。由于F未实现unwindFromE,因此iOS会搜索由UITabBarController控制的其他viewControllers。在您的情况下,它找到C并切换到该标签。

有关展开segues 的更多信息,请参阅Technical Note TN2298: Using Unwind Segues