在我的iPhone项目中,我退出了PlayView。
如下所示,在内部展开功能中,我有一个计时器,该计时器会延迟0.05秒,然后执行“ autoSegue”功能,该功能又会切换到其他屏幕。这在iOS 8上可以正常使用,但对于iOS7设备,我必须大大增加此延迟(最多1.0秒),否则,它会显示“另一个segue已经在进行中”错误。
是否有一种方法可以在完成之前的所有任务后自动执行“ autoSegue”功能?
@IBAction func unwindToPlay (sender: UIStoryboardSegue){
var del = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "autoSegue", userInfo: nil, repeats: false)
}
最佳答案
从viewDiDAppear
而不是从解散调用中调用autoSegue。只有在所有动画过渡完成后才能调用此函数。您不需要计时器。但是,您可能希望在放卷区中设置某种标记,以便仅在放卷区已发生后才触发操作。
编辑
由于这似乎对您不起作用,因此这里有一些代码...
class RedViewController: UIViewController {
var segueDidUnwind: Bool = false
@IBAction func unwindToRed(sender: UIStoryboardSegue) {
println("unwindToRed");
segueDidUnwind = true
}
override func viewDidAppear(animated: Bool) {
println("viewDidAppear");
if (segueDidUnwind) {
self.showVC()
segueDidUnwind = false
}
}
func showVC() {
let vc = UIViewController()
self.presentViewController(vc, animated: true, completion: nil)
}
}
它是this answer的扩展...我们可以将日志记录扩展到...
actionForUnwindButton
prepareForSegue
unwindToRed
viewDidAppear
如果未在代码中调用
viewDidAppear
,则您的项目必须具有其他结构,该结构在问题中不明显。关于ios - Swift:如何实现自定义AutoSegue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28418933/