0
我正在嘗試創建一個持續時間爲1分鐘的計時器,該計時器每分鐘重複一次,但會在實際時間的下一分鐘開始時啓動(如5:21 :00)。每一個類似的帖子,我發現在這裏,我使用這個代碼是:「完成」無法讓NSTimer在Apple Watch上正常工作
@IBAction func switchEnabled(value: Bool) {
if(value){
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Year, .Hour, .Minute, .Second], fromDate: date)
components.minute += 1
components.second = 0
let nextMinuteDate = calendar.dateFromComponents(components)
let doneTimer = NSTimer(fireDate: nextMinuteDate!, interval: 60.0, target: self, selector: Selector("timerDone:"), userInfo: nil, repeats: true)
NSRunLoop.mainRunLoop().addTimer(doneTimer, forMode: NSDefaultRunLoopMode)
// still not working properly
}
else{
print("switch off")
// invalidate timer here
}
}
我timerDone選擇只是打印出來,但是當我在watchOS 2模擬器上運行這一點,啓動開關,它立即打印完成並且計時器開始一分鐘,所以它不會等待直到開火。關於這裏發生了什麼的任何想法?由於
非常感謝,這正是我一直在尋找的。所以,正如你所看到的,我將這一切與手錶上的開關聯繫在一起。所以當我關掉開關時,我想讓計時器停下來。在這種情況下,我如何使計時器無效?謝謝。 – alexk403
在你的類中創建一個NSTimer變量,例如var myTimer = NSTimer()。然後執行 - > myTimer = NSTimer.scheduledTimerWithTimeInterval(60.0,target:self,selector:Selector(「timerDone:」),userInfo:nil,repeatats:true)myTimer.fire()。您可以在您的按鈕操作中調用myTimer.invalidate()來停止計時器。 –
順便說一句,你可以給出一個點/標記的答案是正確的,它可能對別人有用 –