当你有多个 ViewController 调用它时,你如何使用 unwind segue
how do you use unwind segue when you have multiple ViewController that calls it
我最近开始学习 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
如何使用 unwind segue 从 E 返回到 C 或 B 或 D?
注:在ViewControllerE中,只有一个Back
按钮。
我尝试了以下解决方案:
// Add this method in C, B, and D view controller
@IBAction func unwindFromE(sender: UIStoryboardSegue) {}
这似乎有些工作原理,但为什么 F -> X -> E 又回到 C,即使在视图控制器 F/X 中没有 unwindFromE 方法。
正如您所发现的,您可以在多个 viewController 中实现展开目标 @IBAction
,并且 iOS 将沿着调用链向上移动,直到找到一个。这允许 viewController E
到 return 给任何调用它的人,只要他们实现了目标函数 unwindFromE
.
在调用堆栈为 F->X->E
时 E
展开 returning 到 C
的情况下,当 C
和 F
是由相同的 UITabBarController
控制的 viewController。由于 F
没有实现 unwindFromE
,iOS 搜索由 UITabBarController
控制的其他 viewController。在您的情况下,它找到了 C
并切换到该选项卡。
有关 unwind segues 的更多信息,请参见 Technical Note TN2298: Using Unwind Segues。
我最近开始学习 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
如何使用 unwind segue 从 E 返回到 C 或 B 或 D?
注:在ViewControllerE中,只有一个Back
按钮。
我尝试了以下解决方案:
// Add this method in C, B, and D view controller
@IBAction func unwindFromE(sender: UIStoryboardSegue) {}
这似乎有些工作原理,但为什么 F -> X -> E 又回到 C,即使在视图控制器 F/X 中没有 unwindFromE 方法。
正如您所发现的,您可以在多个 viewController 中实现展开目标 @IBAction
,并且 iOS 将沿着调用链向上移动,直到找到一个。这允许 viewController E
到 return 给任何调用它的人,只要他们实现了目标函数 unwindFromE
.
在调用堆栈为 F->X->E
时 E
展开 returning 到 C
的情况下,当 C
和 F
是由相同的 UITabBarController
控制的 viewController。由于 F
没有实现 unwindFromE
,iOS 搜索由 UITabBarController
控制的其他 viewController。在您的情况下,它找到了 C
并切换到该选项卡。
有关 unwind segues 的更多信息,请参见 Technical Note TN2298: Using Unwind Segues。