Unwind segue 将我移至错误的视图控制器

Unwind segue moves me to wrong view controller

在我的测试应用程序中,我在选项卡栏控制器中嵌入了两个视图控制器(VC1 和 VC2)。每个视图控制器都有 "Jump" 按钮,将我们移至第三个视图控制器(VC3):

我在 VC1 中添加了函数

@IBAction func unwindFromVC3(segue: UIStoryboardSegue) {
    print("Unwind from VC3")
}

并使用 "Exit" VC3 图标连接 "Save" VC3 栏项目。

因此,当我 运行 我的应用程序并单击 VC1 的 "Jump" 按钮时,我移到了 VC3,当我单击 "Save" 时,我又移回了 VC1。没关系。

如果我移动到 VC2 栏并从那里单击 "Jump",我将再次移动到 VC3。但是,如果我从那里单击 "Save",我会再次回到 VC1(而不是 VC3)。

我原以为那里什么也没有发生(因为我在 VC2 中没有任何 "unwind" 函数)。那么为什么我被转移到 VC1?是否可以为我的 "Save" 项目创建两个展开操作?

如果您想从 VC3 回退到 VC2,只需将 unwindFromVC3 也添加到 VC2:

@IBAction func unwindFromVC3(segue: UIStoryboardSegue) {
    print("Unwind from VC3")
}

然后 unwind segue 将展开到正确的 ViewController(segue 到 VC3 的那个)。

您只需设置一次展开转场,只要转换到 VC3 的所有 ViewController 实现 unwindFromVC3,保存就会 return 到原始 ViewController.