WatchKit 定时器结束时的函数

Posted

技术标签:

【中文标题】WatchKit 定时器结束时的函数【英文标题】:Function when WatchKit timer ends 【发布时间】:2017-08-12 09:22:31 【问题描述】:

我有一个手表计时器, 但是,我不知道如何在计时器结束时执行通知或 segue 之类的操作。 有什么想法吗?

@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()

是的,我对这一切都很陌生,所以它不是一个开创性的代码,请随时更正。

【问题讨论】:

【参考方案1】:

我敢肯定,肯定有人可以改进这一点。但我构建了一个带有开始按钮、计时器和标签的小 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!")
    


【讨论】:

【参考方案2】:

WKInterfaceTimer 只是一个标签,可以用来显示倒计时。一旦倒计时达到零,它就没有系统调用的关联函数。如果您需要知道倒计时何时到达 0,则需要配置具有相同目标日期的 Timer 对象。

【讨论】:

以上是关于WatchKit 定时器结束时的函数的主要内容,如果未能解决你的问题,请参考以下文章

求51单片机中,用C语言写的五个中断源的中断函数的书写规则,就是进入中断函数时的那个函数名,并说明...

c++制作的“音乐计时器”,结束后播放《天空之城》

Watchkit , openParentApplication 和 WatchKit 扩展

定时器

wxWidgets第十四课 wxTimer定时器

php信号处理