2017-08-12 69 views
1

我有一個watchkit計時器,
但是,我不知道如何在計時器結束時執行類似通知或繼續的動作。
有什麼建議嗎?當WatchKit計時器結束時的功能

@IBOutlet var sceneTimer: WKInterfaceTimer! 


override func awake(withContext context: Any?) { 
    super.awake(withContext: context) 
    sceneTimer.setDate(NSDate(timeIntervalSinceNow :21) as Date) 

} 

override func willActivate() { 
    super.willActivate() 
    sceneTimer.start() 
} 

override func didDeactivate() { 
    super.didDeactivate() 
} 

是的我對這件事是新的,所以它不是一個開創性的代碼,隨時糾正。

回答

0

WKInterfaceTimer只是一個可用於顯示倒計時的標籤。它沒有任何相關的功能,一旦倒計數到零就被系統調用。如果您需要知道倒數到達0的時間,則需要配置具有相同目標日期的Timer對象。

0

有些人當然可以改進這一點,我相信。但我用一個開始按鈕,一個計時器和一個標籤構建了一個小小的watchOS應用程序。根據情況連接WKInterfaceTimerWKInterfaceLabelButton,此代碼應該可以工作。您也可以從GitHub下載該項目。

var theTimer = Timer() 
var backgroundTimer = TimeInterval(15) 
@IBOutlet var appleTimer: WKInterfaceTimer! 
@IBOutlet var label: WKInterfaceLabel! 


override func willActivate() { 
    // This method is called when watch view controller is about to be visible to user 
    super.willActivate() 
    appleTimer.setDate(Date(timeIntervalSinceNow: 15)) 
    label.setText("") 
}  


@IBAction func startButton() { 
    let startTime = Date(timeIntervalSinceNow: 15) 
    appleTimer.setDate(startTime) 
    appleTimer.start() 

    // This will call timerCountDown() once per second until conditions are met. 
    theTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerCountDown), userInfo: nil, repeats: true) 

} 

func timerCountDown() { 
    backgroundTimer -= 1.0 
    print(backgroundTimer) 
    if backgroundTimer == 0 { 
     theTimer.invalidate() 
     appleTimer.stop() 

     // You could call an Alert Action here. 
     label.setText("Timer Done!") 
    } 

}