如何在时间用完时自动重启计时器?

How can I automatically restart a timer when time runs out?

我正在尝试开始倒计时,一旦它达到 0,就会自动重新启动计时器回到 10。我觉得这应该很简单,但我遇到了问题。

@IBOutlet weak var timerLabel: UILabel!

var defaultTime = 10
var timer = Timer()

func startTimerFunc() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.action), userInfo: nil, repeats: true)
}

@IBAction func startTimerBtn(_ sender: UIButton) {
    startTimerFunc()
}

func resetTimer() {
    timer.invalidate()
    defaultTime = 0
}

@objc func action() {

    defaultTime -= 1
    timerLabel.text = String(defaultTime)

    if timerLabel.text == "0" {
        resetTimer()
        startTimerFunc()
    }
}

计时器保持运行直到你invalidate它,这里你只需要重新设置默认时间:

@objc func action() {
    if defaultTime == 0 {
        defaultTime = 10
    }
    defaultTime -= 1
    timerLabel.text = String(defaultTime)
}