我只是尝试一个小项目。我希望用户能够选择3个时间选项之一。如果选择30秒,则计时器将运行30秒或10秒等,如果您选择该时间。一旦时间用完,我希望它在计时器达到0.0]时重新启动回选择的时间
我的代码在18秒内都可以正常工作。如果将其设置为19或更高,它将不起作用。目前我还不知道为什么它能工作到18岁。任何帮助都将是惊人的。
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var ChangeTime: UILabel!
var defaultTime = 0.0
var timer = Timer()
//buttons
@IBAction func ten(_ sender: UIButton) {
ChangeTime.text = "10"
timerLabel.text = ChangeTime.text
}
@IBAction func thirty(_ sender: UIButton) {
ChangeTime.text = "30"
timerLabel.text = ChangeTime.text
}
@IBAction func seven(_ sender: UIButton) {
ChangeTime.text = "7"
timerLabel.text = ChangeTime.text
}
@IBAction func startTimerBtn(_ sender: UIButton) {
startTimerFunc()
}
func startTimerFunc() {
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.action), userInfo: nil, repeats: true)
defaultTime = Double(Int(ChangeTime.text!)!)
}
@objc func action() {
if timerLabel.text == "0.0" {
timer.invalidate()
defaultTime = 10
startTimerFunc()
}
defaultTime -= 0.1
timerLabel.text = String(format: "%.1f", defaultTime)
}
我只是尝试一个小项目。我希望用户能够选择3个时间选项之一。如果选择30秒,则计时器将运行30秒或10秒等,如果您选择该时间。 ...
计时器将无限期运行,直到您使它无效为止。在这里,即使计时器已达到0,也需要运行计时器。因此,您只需重置defaultTime
。这是您需要做的: