ios - 将倒数计时器值重置为保存在数组中的默认值
问题描述
我正在从数组中的默认 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("Start Brewing", for: .normal)
}
}
解决方案
在您viewDidload()
或每当您获取存储在数组中的值时,将值存储在变量中。
var initialValueOfTime = 0 // the initial value is stored here. which is 300
override func viewDidLoad() {
super.viewDidLoad()
initialValueOfTime = cafe.time
}
@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)
}
}
推荐阅读
- javascript - 在 primefaces 数据表中显示计时器 setInterval
- bash - 使用 bash 脚本从二进制闪存映像的末尾删除 0xff
- javascript - 为什么 String.prototype.split() 方法不尊重正则表达式中的捕获组?
- linux - 如何可靠地从另一个进程连续写入的文件中读取数据?
- eclipse-plugin - 为什么这个 Eclipse RCP 插件缺少视图?
- python - 如何选择高斯混合模型中的分量数?我正在尝试根据口语对输入音频样本进行分类
- python - 从高斯分布估计协方差矩阵
- html - 无法在离子电子商务应用程序中根据数量增加价格
- html - 如何使文本响应?
- html - 如何拥有带有顶部和底部粘性导航栏的全屏 div