我正在从数组中的默认INT值创建一个倒数计时器,但是我不知道如何将计时器重置为数组中的原始值。就是说,例如,当用户按下“停止冲泡”时,倒数计时器将从5分钟重新开始。有人可以帮助我找出我做错了什么还是想念什么?我正在迈向iOS开发的第一步。
提前感谢!
我的代码:
'''
@objc func runTimer() {
cafe.time -= 1
labelCowntdownTimer.text = "\(cafe.time)"
// MM:SS:_
let flooredCounter = cafe.time
let minute = (flooredCounter % 3600) / 60
var minuteString = "\(minute)"
if minute < 10 {
minuteString = "0\(minute)"
}
let second = (flooredCounter % 3600) % 60
var secondString = "\(second)"
if second < 10 {
secondString = "0\(second)"
}
labelCowntdownTimer.text = "\(minuteString):\(secondString)"
}
//Mark: - resetTimer
@objc func resetTimer() {
timer.invalidate()
//cafe.time
runTimer()
}
//Mark: - ButtonPressed - Start Timer
@IBAction func startButtonPressed(_ sender: Any) {
if !isTimerRunning {
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
isTimerRunning = true
startButton.setTitle("Stop Brewing", for: .normal)
} else {
resetTimer()
isTimerRunning = false
startButton.setTitle("Star Brewing", for: .normal)
}
}
'''
尝试下面的代码
@objc func resetTimer() {
timer.invalidate()
timer = nil //You should also need to nil to a timer to stop it.
//runTimer() - also comment this line as its not needed to call this function after stop timer.
//Reinitialize all your required variable here to calculate the time
}
在viewDidload()
中或每当将值存储在数组中时,将值存储在变量中。
let initialValueOfTime = cafe.time // the initial value is stored here. which is 300
@objc func runTimer() {
if isTimerRunning {
cafe.time -= 1
} else {
cafe.time = initialValueOfTime
}
labelCowntdownTimer.text = "\(cafe.time)"
// MM:SS:_
let flooredCounter = cafe.time
let minute = (flooredCounter % 3600) / 60
var minuteString = "\(minute)"
if minute < 10 {
minuteString = "0\(minute)"
}
let second = (flooredCounter % 3600) % 60
var secondString = "\(second)"
if second < 10 {
secondString = "0\(second)"
}
labelCowntdownTimer.text = "\(minuteString):\(secondString)"
}
//Mark: - resetTimer
@objc func resetTimer() {
timer.invalidate()
runTimer()
}
//Mark: - ButtonPressed - Start Timer
@IBAction func startButtonPressed(_ sender: Any) {
if !isTimerRunning {
isTimerRunning = true
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
startButton.setTitle("Stop Brewing", for: .normal)
} else {
isTimerRunning = false
resetTimer()
startButton.setTitle("Star Brewing", for: .normal)
}
}