2016-02-22 36 views
0

我試圖原因請看一次連接到的NSTimer計數器另一個視圖控制器到達0夫特:執行賽格瑞當變量達到某一值

赫雷什我的定時器的代碼:

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

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

回答

0

假設你已經有了一個賽格瑞設立在故事板與標識符mySegueID,使用此代碼:

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

工作完美,謝謝! –

+1

@ Ryan.H真棒,請標記我的答案是正確的:) – Tometoyou

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) 
}