目前我正在尝试创建一个3 ... 2 ... 1 ... Go!Go之后的倒计时类型!声明发生了一个动作但是使用完成处理程序的选项Timer.scheduleTimer
没有能力从我理解的倒计时?
截至目前,我可以从3倒数,但不知道如何在Go中使计时器无效!并执行一个动作
var seconds = 3
var countDownTimer = Timer()
func startCountDown() {
countDownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(TrackActivityVC.updateTimer), userInfo: nil, repeats: true)
}
func updateTimer() {
seconds -= 1
print(seconds)
}
// Not sure how to use this code to create a countdown, as it doesn't seem possible with this method
Timer.scheduledTimer(withTimeInterval: someInterval, repeats: false) {
}
Run Code Online (Sandbox Code Playgroud)
因此问题是如何使用完成处理程序使倒计时器.
vac*_*ama 12
以下是使用尾随闭包语法创建倒数计时器的方法:
var seconds = 3
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
self.seconds -= 1
if self.seconds == 0 {
print("Go!")
timer.invalidate()
} else {
print(self.seconds)
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个更好的版本,在viewController
取消初始化时使计时器无效.它用于[weak self]
避免挂起,viewController
如果它关闭:
class MyViewController: UIViewController {
var seconds = 3
var myTimer: Timer?
func startCountdown() {
myTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] timer in
self?.seconds -= 1
if self?.seconds == 0 {
print("Go!")
timer.invalidate()
} else if let seconds = self?.seconds {
print(seconds)
}
}
}
deinit {
// ViewController going away. Kill the timer.
myTimer?.invalidate()
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2357 次 |
最近记录: |