Swift:如何实现自定义AutoSegue

时间:2015-02-09 20:40:57

标签: ios xcode swift segue

在我的iPhone项目中,我有一个退出的视频,退出PlayView。 在内部展开功能如下所示我有一个延迟0.05秒的计时器,然后执行" autoSegue"功能又转向其他屏幕。这在iOS 8上运行良好,但对于iOS7设备,我必须显着增加此延迟(最多1.0秒),否则,它会给出"另一个segue已经在进行中"错误。

有没有办法执行" autoSegue"当任何先前的segue完成后自动运行?

@IBAction func unwindToPlay (sender: UIStoryboardSegue){
    var del = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "autoSegue", userInfo: nil, repeats: false)
}

1 个答案:

答案 0 :(得分:1)

viewDiDAppear调用您的autoSegue,而不是从您展开的segue调用。只有在所有动画过渡完成后才会调用此方法。你不会需要一个计时器。但您可能希望在展开segue中设置某种标记,以便在发生解除segue后触发 操作。

修改
由于这似乎不适合你,这里有一些代码......

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,那么您的项目必须具有其他结构,这在问题中并不明显。