unwind segue vs. popViewController 动画

Posted

技术标签:

【中文标题】unwind segue vs. popViewController 动画【英文标题】:unwind segue vs. popViewControllerAnimated 【发布时间】:2016-02-09 19:05:19 【问题描述】:

我有一个连接到多个视图控制器的地图视图。

我需要从另一个按钮(而不仅仅是后退按钮)实现“展开”,所以我使用了:

self.navigationController?.popViewControllerAnimated(true)

我的问题是:如上所述,我是否应该费心尝试在父视图控制器中使用 prepareForUnwindcanPerformUnwindSegueAction 在代码中实现展开 + 从 viewController 中按住 ctrl-drag 以退出 Storyboard?如果有,为什么?

【问题讨论】:

【参考方案1】:

基本上,如果您只是dimissing 一个呈现的UIViewController 或从导航堆栈弹出一个UIViewController,您不需要使用展开转场,尽管它对您也是如此。

但是想想有UINavigationControllers A,B,C 然后是RootViewController R

的情况

然后想一个条件

 (Present) R -> A
 (Push) AR -> XVController
 (Push)XVController -> B
 (Present)BR-> YVContoller
...and so on..

现在如果你想回到 YVController 到你刚刚启动的项目 RootViewController。没有办法popToRootViewController 弹出到 B UINavigationController 的导航堆栈。现在你做什么..要么使用委托或更改窗口 RootViewController 这不是一个好主意

所以你需要使用 unwind segue 来克服这个问题。一个示例 project 来展示使用它的强大功能。

【讨论】:

以上是关于unwind segue vs. popViewController 动画的主要内容,如果未能解决你的问题,请参考以下文章

使用 unwind segues 推送数据

iOS从推送segue中检测unwind segue

UINavigationController 的 Unwind Segue

如何以编程方式执行Unwind segue?

以编程方式执行 unwind segue

从 Unwind segue 触发时,Push segue 不起作用