Swift:当变量达到某个值时执行segue

时间:2016-02-22 10:50:42

标签: ios swift segue

一旦连接到NSTimer的计数器达到0,我就试图转向另一个视图控制器。

继承我的计时器代码:

    var counter = 15
    var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timerAction", userInfo: nil, repeats: true)

    func timerAction() {
        --counter
        timerLabel.text = "\(counter)"

2 个答案:

答案 0 :(得分:0)

假设您在故事板中设置了标识为mySegueID的segue,请使用以下代码:

private var timer:NSTimer! //Make sure this is a property of your class

func timerAction() {
    --counter
    timerLabel.text = "\(counter)"
    if (counter == 0) {
        timer.invalidate()
        timer = nil
        performSegueWithIdentifier("mySegueID", sender: nil)
    }
}

这将检查计数器是否等于零。如果是,它会阻止你的NSTimer开火,并调用你在故事板中设置的segue。

答案 1 :(得分:0)

要触发segue,只需在定时器执行时调用适当的方法。

更具体地说,您的计时器方法可以重写。看起来你只想等待15秒然后激活segue,但你的代码通过每秒递减计数器来做到这一点;更好的方法是在延迟后解雇方法;你可以使用GCD更优雅地做:

let delay = dispatch_time(DISPATCH_TIME_NOW, 15 * Int64(NSEC_PER_SEC))
dispatch_after(delay, dispatch_get_main_queue()) { () -> Void in
    performSegueWithIdentifier("mySegueID", sender: nil)
}