我最近开始学习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方法。
答案 0 :(得分:1)
正如您所发现的,您可以在多个viewControllers中实现展开目标@IBAction
,iOS会在调用链上找到它。这允许viewController E
返回给任何调用它的人,只要它们实现目标函数unwindFromE
。
如果调用堆栈为E
时C
展开返回F->X->E
,则当C
和F
由viewControllers控制时,会发生这种情况相同的UITabBarController
。由于F
未实现unwindFromE
,因此iOS会搜索由UITabBarController
控制的其他viewControllers。在您的情况下,它找到C
并切换到该标签。
有关展开segues 的更多信息,请参阅Technical Note TN2298: Using Unwind Segues。