重复事件
您可以使用计时器多次执行操作,如以下示例所示。计时器会调用一种方法,每半秒更新一次标签。
这是该代码:
import UIKit
class ViewController: UIViewController {
var counter = 0
var timer = Timer()
@IBOutlet weak var label: UILabel!
// start timer
@IBAction func startTimerButtonTapped(sender: UIButton) {
timer.invalidate() // just in case this button is tapped multiple times
// start the timer
timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
}
// stop timer
@IBAction func cancelTimerButtonTapped(sender: UIButton) {
timer.invalidate()
}
// called every time interval from the timer
func timerAction() {
counter += 1
label.text = "\(counter)"
}
}
延迟事件
您还可以使用计时器在将来的某个时间安排一次事件。与上述示例的主要区别在于,您使用repeats: false
而不是true
。
timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(delayedAction), userInfo: nil, repeats: false)
上面的示例delayedAction
在设置了计时器两秒后调用了一个名为方法。它不会重复,但是您仍然可以致电timer.invalidate()
如果您需要在事件发生之前取消该事件,。
笔记
- 如果有机会多次启动您的计时器实例,请确保首先使旧计时器实例无效。否则,您将失去对计时器的引用,并且无法停止。(请参阅此问答)
- 不需要时不要使用计时器。请参阅iOS应用《能源效率指南》中的计时器部分。
有关