Твоя логика плохая.Вы не хотите менять текст какой-либо метки каждую секунду в соответствии с тем же другим текстом каждый раз.
Вы должны создать глобальную переменную для времени, скажем, 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, сделайте недействительным свой таймер
@IBAction func updateTime() {
interval -= 1
timerLabel?.text = String(interval)
if interval == 0 { endTimer() }
}