Печать на консоль, когда WKInterfaceTimer достигает 0
Я хочу видеть, что моя программа знает, когда таймер сделан. Я использую WKInterfaceTimer в Xcode 7 Beta 3 (7A152u). "Tick Tock" печатает на консоли, пока счетчик начинает обратный отсчет. Но когда он достигает 0, "Timer Done" не печатается.
@IBOutlet var myTimer: WKInterfaceTimer!
@IBAction func startButton() {
myTimer.start()
myTimer.setDate(NSDate(timeIntervalSinceNow: 4)) // Arbitrary 4 second coundown.
// Impliment an alert.
if myTimer == 0 {
print("Timer Done")
} else {
print("Tick Tock")
}
}
2 ответа
То, что ты сделал, неправильно. После звонка setDate
таймер начинает обратный отсчет. Чтобы получить информацию о текущем состоянии таймера, вы должны создать его экземпляр. NSTimer
и проверьте, когда оно срабатывает.
Чтобы узнать, когда таймер достигнет 0, настройте объект NSTimer с той же целевой датой, которую вы использовали для установки таймера.
Это решение, которое я придумал. Прямо сейчас предупреждение в конце таймера просто выводится на консоль с надписью "Готово". Большое спасибо пользователю Prawn за то, что я использовал часть его кода в этом решении.
import WatchKit
import Foundation
var myTimer : NSTimer?
var elapsedTime : NSTimeInterval = 0.0
var startTime = NSDate()
var duration : NSTimeInterval = 4.0 //Arbitrary 4 seconds to test timer.
class InterfaceController: WKInterfaceController {
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
WKTimer.setDate(NSDate(timeIntervalSinceNow: duration))
}
override func willActivate() {
super.willActivate()
}
@IBOutlet var WKTimer: WKInterfaceTimer! //The WatchKit timer the user sees
@IBAction func startButton() { //Start button
NSTimer.scheduledTimerWithTimeInterval(duration, target: self, selector: ("timerDone"), userInfo: nil, repeats: false)
WKTimer.setDate(NSDate(timeIntervalSinceNow: duration ))
WKTimer.start()
}
//Reset button resets the timer back to the original time set.
@IBAction func resetButton() {
WKTimer.stop()
WKTimer.setDate(NSDate(timeIntervalSinceNow: duration))
}
func timerDone() {
print("Done")
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
}