【发布时间】:2016-02-19 10:55:56
【问题描述】:
我有两个视图,A 和 B,它们之间有模态序列。 A 的控制器定义了@IBAction func unwindSegue(segue: UIStoryboardSegue)。
我正在尝试以编程方式执行展开转场(从视图 B 回到 A),但它失败而不会产生任何错误。在视图 B 的控制器中,我调用了performSegueWithIdentifier("unwind", sender: self),可以看到调用了func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?),但之后没有任何反应。
我已经为 XCode 中的展开转场指定了自定义名称,并且视图 B 和 C 之间的设置相同(使用不同的名称以避免冲突)可以正常工作。
编辑: 展开由按钮或代码触发,并且按钮流程工作正常。我很困惑,因为运行时可以识别 segue,否则它会引发异常 - 那么是什么阻止它运行呢?我已经完成了 prepare 方法,并且没有任何阻塞。
编辑 2: 我注意到从按钮和通过代码触发视图 A 和 B 之间的 unwindSegue 之间的区别是目标 VC。通过按钮时,目的地是视图 A,但通过代码是 C。为什么会发生这种情况?代码流是通过视图 C 触发的,其中有一个返回视图 A 的按钮,并且只是一系列从堆栈中弹出视图的展开序列。
我可以通过按钮一次从每个视图向后展开,但是如果我点击按钮从视图 C 或 D 返回到视图 A,我会展开到视图 B 然后遇到目的地不正确的问题等等无法完成遍历查看A。
【问题讨论】:
-
您是否已将 segue 连接到退出视图控制器 B 并从弹出窗口中选择控制器 A 的展开方法?
-
如果使用导航控制器,请尝试
self.navigationController.performSegueWithIdentifier。一个想法。 -
我使用的是普通的 VC。
-
我认为您遇到了架构/设计问题
标签: ios swift segue uistoryboardsegue unwind-segue