use*_*171 1 ios uistoryboard segue uistoryboardsegue
我有3个MVC,在这里命名为A,B,C.
A是主MVC,按钮"Menu"通过popover segue连接到B.
A还连接到C,手动显示segue.
B是一个弹出窗口MVC,按钮"Detail"连接到A,带有展开segue.
C是具有详细信息的细节MVC.
在A.的展开函数内部,我调用performSegueWithIdentifier来显示C.
预期的行为是
但运行我得到的应用程序.
C突然出现并消失,这不是我想要的.
一些额外的信息
似乎unwind函数不是调用performSegueWithIdentifier的正确位置.
调用unwind函数后, UIKit将弹出视图控制器.
因此,在unwind功能中推送新视图控制器将快速弹出.
解决方案是延迟performSegueWithIdentifier.
解决方案1:不工作
添加bool实例并在viewDidAppear中使用此实例来确定我们是否执行segue.
如果B控制器是一个弹出框,将无法工作.B弹出消失后,不会为A控制器调用viewDidAppear.
解决方案2:工作
将performSegueWithIdentifier推入主队列.
@IBAction func unwind(segue : UIStoryboardSegue) {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("SomeSegue", sender: self)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |