Swift 计时器失效后运行的条件
我目前有一个计时器应用程序,代码如下。我想知道,当计时器达到00:00时,如何对条件(例如显示消息的标签)进行编程。这仅仅是一个简单的if语句吗?如果是,那会是什么样子 任何帮助都将不胜感激。谢谢大家!Swift 计时器失效后运行的条件,swift,Swift,我目前有一个计时器应用程序,代码如下。我想知道,当计时器达到00:00时,如何对条件(例如显示消息的标签)进行编程。这仅仅是一个简单的if语句吗?如果是,那会是什么样子 任何帮助都将不胜感激。谢谢大家! @IBOutlet weak var timerLabel: UILabel! var countdownTimer: Timer! var totalTime = 60 func startTimer() { countdownTimer = Timer.scheduledTimer(time
@IBOutlet weak var timerLabel: UILabel!
var countdownTimer: Timer!
var totalTime = 60
func startTimer() {
countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:
#selector(updateTime), userInfo: nil, repeats: true)
}
@objc func updateTime() {
timerLabel.text = "\(timeFormatted(totalTime))"
if totalTime != 0 {
totalTime -= 1
} else {
endTimer()
}
}
func endTimer() {
countdownTimer.invalidate()
}
func timeFormatted(_ totalSeconds: Int) -> String {
let seconds: Int = totalSeconds % 60
let minutes: Int = (totalSeconds / 60) % 60
return String(format: "%02d:%02d", minutes, seconds)
}
据我们所知,在您的代码中,
endTimer
可以从外部调用以停止计时器。所以那不是最好的位置
- 我会将
重命名为endTimer
或类似名称,并将此回调设置为私有(以保证您不会从其他任何地方调用它)timeIsUp
- 使用
使计时器无效public func stopTimer()
- 从
timeIsUp
timeIsUp
将是放置消息的地方
除了这个重构建议,在您当前的代码中,我会将消息内容放在else{endTimer()}
代码块中,因为这就是满足“时间到了”条件的地方
@IBOutlet weak var timerLabel: UILabel!
var countdownTimer: Timer!
var totalTime = 60
func startTimer() {
countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
@objc func updateTime() {
timerLabel.text = "\(timeFormatted(totalTime))"
if totalTime != 0 {
totalTime -= 1
} else {
// ⬅️ put the message code here
endTimer()
}
}
func endTimer() {
countdownTimer.invalidate()
}
func timeFormatted(_ totalSeconds: Int) -> String {
let seconds: Int = totalSeconds % 60
let minutes: Int = (totalSeconds / 60) % 60
return String(format: "%02d:%02d", minutes, seconds)
}
看起来您应该将语句放在
endTimer
方法中。如果totalTime!=0,则该条件已经作为的else部分存在。