我的代码在这里:
@IBAction func updateTime(){
let inputVal: String = textMinutes.text!
var inputInt = Int(inputVal)
timerLabel?.text = "\(inputInt)"
if inputInt != 0 {
inputInt -= 1
}
else {
endTimer()
}
所以在inputInt-= 1上,我不断收到错误消息“无法转换'Int类型的值?'到预期的参数类型'inout Int'”。我不确定如何解决此问题,或者我的代码在这里是否正确。就是这样:
func startTimer() {
countdownTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.updateTime), userInfo: nil, repeats: true)
}
这是我要制作的计时器。我对此很陌生,因此如果您需要其他任何内容,我可以将其发布。我到处都在寻找解决方案,但没有发现任何东西。预先感谢。
答案 0 :(得分:0)
您的逻辑不好。您不想每次都根据相同的其他文本每秒更改某个标签的文本。
您应该为时间创建全局变量,例如interval
class ViewController: UIViewController {
var interval = 0
...
}
然后,当您启动计时器时,请确保用户输入了数字,如果已输入,请启动计时器并设置interval
func startTimer() {
if let interval = Int(textMinutes.text!) {
self.interval = interval
timerLabel?.text = String(interval)
countdownTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.updateTime), userInfo: nil, repeats: true)
} else {
... // handle case if user didn’t write integer
}
}
然后每次计时器更新时,只需减小interval
并通过此text
变量更改文本字段的interval
,然后在interval
为0时,使计时器无效< / p>
@IBAction func updateTime() {
interval -= 1
timerLabel?.text = String(interval)
if interval == 0 { endTimer() }
}