计时器倒计时中未显示所有数字
All digits not shown in timer countdown
在进入视图时,我调用了一个函数来加载计时器,就像这样...
var count = 10
func startTimer() {
timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
}
和 update
函数给出为..
@objc func update() {
while (count != 0) {
count -= 1
countdownLabel.text = "\(count)"
}
timer.invalidate()
}
但是当我看到这个视图时,会直接显示数字 0,而不是理想地显示序列 9,8,7,6,5,4,3,2,1 中的所有数字, 0
我哪里做错了..?
Swift 4:
var totalTime = 10
var countdownTimer: Timer!
@IBOutlet weak var timeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
startTimer()
}
此方法调用初始化计时器。它指定了 timeInterval(调用方法的频率)和选择器(被调用的方法)。
间隔以秒为单位,因此要使其像标准时钟一样运行,我们应将此参数设置为 1。
func startTimer() {
countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
// Stops the timer from ever firing again and requests its removal from its run loop.
func endTimer() {
countdownTimer.invalidate()
}
//updateTimer is the name of the method that will be called at each second. This method will update the label
@objc func updateTime() {
timeLabel.text = "\(totalTime)"
if totalTime != 0 {
totalTime -= 1
} else {
endTimer()
}
}
在进入视图时,我调用了一个函数来加载计时器,就像这样...
var count = 10
func startTimer() {
timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
}
和 update
函数给出为..
@objc func update() {
while (count != 0) {
count -= 1
countdownLabel.text = "\(count)"
}
timer.invalidate()
}
但是当我看到这个视图时,会直接显示数字 0,而不是理想地显示序列 9,8,7,6,5,4,3,2,1 中的所有数字, 0
我哪里做错了..?
Swift 4:
var totalTime = 10
var countdownTimer: Timer!
@IBOutlet weak var timeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
startTimer()
}
此方法调用初始化计时器。它指定了 timeInterval(调用方法的频率)和选择器(被调用的方法)。
间隔以秒为单位,因此要使其像标准时钟一样运行,我们应将此参数设置为 1。
func startTimer() {
countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
// Stops the timer from ever firing again and requests its removal from its run loop.
func endTimer() {
countdownTimer.invalidate()
}
//updateTimer is the name of the method that will be called at each second. This method will update the label
@objc func updateTime() {
timeLabel.text = "\(totalTime)"
if totalTime != 0 {
totalTime -= 1
} else {
endTimer()
}
}