Я создаю секундомер, и у меня возникают проблемы с остановкой таймера при нажатии кнопки «СТОП». Я могу сбросить текст до 0, но таймер продолжает работать, и если я снова нажму кнопку «Пуск», таймер будет работать так, как будто я никогда не нажимал кнопку «Стоп».
Код таймера:
func goTimer()
{
if timer == nil {
timer = Timer.scheduledTimer(timeInterval : 0.1,
target : self,
selector :#selector(timerAction(_:)),
userInfo: nil, repeats: true);
}
}
func stopTimer()
{
if timer != nil {
timer!.invalidate()
timer = nil
}
}
func updateTimer() {
let intervalTotal = -Int(startDate.timeIntervalSinceNow)
let hours = intervalTotal / 3600
let minutes = intervalTotal / 60 % 60
let seconds = intervalTotal % 60
if startButton.currentTitle == "STOP" {
totalTime.text = String(format: "%02i:%02i:%02i", hours, minutes, seconds)
lapTime.text = String(format: "%02i:%02i:%02i", hours, minutes, seconds)
}
}
@objc func timerAction (_ timer : Timer) {
print("timerAction(_:)")
self.updateTimer()
}
@IBAction func startTimer(_ sender: Any) {
if startButton.currentTitle == "STOP" {
startButton.backgroundColor = UIColor.systemGreen
startButton.setTitle("START", for : .normal)
stopTimer()
lapTime.text = "00:00:00"
}
else if startButton.currentTitle == "START" {
startButton.backgroundColor = UIColor.systemRed
startButton.setTitle("STOP", for : .normal)
goTimer()
lapButton.isEnabled = true
lapButton.backgroundColor = UIColor.systemBlue
}
}