如果我们可以使用 segues 返回到任何视图控制器,为什么我们要使用 unwind segue?

Why do we use unwind segue if we can use segues to go back to any view controller?

我想知道为什么我们使用 unwind segues 并制作两段代码,一段在源视图控制器中,一段在目标视图控制器中,并且可以从 - 例如 - 视图控制器中的按钮按住 ctrl 拖动# 3 显示视图控制器#1

Unwind segues 为您提供了一种通过推送、模态、弹出窗口和其他类型的 segues "unwind" 返回导航堆栈的方法。您使用 unwind segues "go back" 导航层次结构中的一个或多个步骤。与创建目标视图控制器的新实例并过渡到它的普通 segue 不同,unwind segue 过渡到导航层次结构中的现有视图控制器。在转换开始之前,回调会同时提供给源视图控制器和目标视图控制器。您可以使用这些回调在视图控制器之间传递数据。

当您在 Interface Builder 中创建展开转场时,您没有指定目标视图控制器。 unwind segue 确定在运行时触发时要展开到导航层次结构中的哪个视图控制器。此过程是可定制的,并且为容器视图控制器提供了额外的定制点以参与展开过程。

检查:https://developer.apple.com/library/ios/technotes/tn2298/_index.html

 -(IBAction)unwindForSegue:(UIStoryboardSegue *)unwindSegue towardsViewController:(UIViewController *)subsequentVC{


   }

简而言之,您不能使用普通的 segue 来表示“返回”。触发触发的 segue 实例化目标视图控制器;它创建一个新的视图控制器实例。但是当关闭呈现的视图控制器或弹出推送的视图控制器时,我们不需要任何新的视图控制器实例。我们想 return,以某种方式,到视图控制器的现有实例。

来源:编程 iOS9 - Matt Neuberg(第 6 版)第 385 页