【问题标题】:how do you use unwind segue when you have multiple ViewController that calls it当您有多个调用它的 ViewController 时,如何使用 unwind segue
【发布时间】:2018-04-26 15:22:38
【问题描述】:

我最近开始学习 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?

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

我尝试了以下解决方案:

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

这似乎在某种程度上起作用,但是为什么即使在视图控制器 F/X 中没有unwindFromE 方法。

【问题讨论】:

  • C和F是两个VC在同一个TabBarController吗?
  • @vacawama 是的。两个 C/F 都在同一个 TabBarController 中。

标签: ios swift uistoryboardsegue unwind-segue


【解决方案1】:

正如您所发现的,您可以在多个视图控制器中实现展开目标@IBAction,iOS 将沿着调用链向上直到找到一个。这允许 viewController E 返回给调用它的任何人,只要他们实现了目标函数unwindFromE

如果您的E unwind 在调用堆栈为F->X->E 时返回到C,则当CF 是由同一UITabBarController 控制的viewControllers 时会发生这种情况。由于F 没有实现unwindFromE,iOS 搜索由UITabBarController 控制的其他viewController。在您的情况下,它找到了 C 并切换到该选项卡。

更多关于unwind segues的信息可以在Technical Note TN2298: Using Unwind Segues找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多