我不确定为什么,但每次运行我的应用程序时,我的计时器都不会调用更新功能。我已经尝试了一切:使用#selector,在更新结束时添加冒号,没有任何工作。我在更新中添加了一个print语句,以确保它到达那里,并且print语句永远不会打印!我不确定为什么它不会被呼叫....帮助!附:我知道选择确实是if语句中的一个选项,我有一个打印声明,并且它正在工作。
if (selected == "05 seconds") {
count = 5
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "10 seconds") {
count = 10
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "20 seconds") {
count = 20
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "30 seconds") {
print("I'm here!")
count = 30
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "Single Shot") {
SendButton.isHidden = false
countDownLabel.isHidden = true
}
}
func update() {
print("Now I'm in update!")
count = count - 1;
countDownLabel.text = String(count)
}
答案 0 :(得分:6)
计时器不起作用,因为您使用的方法要求将计时器显式添加到runloop。
使用API将隐式计时器添加到runloop。
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(update), userInfo: nil, repeats: true)
PS:#selector
语法更可取,因为它在编译时检查动作方法是否存在。