Я не могу найти ни одного учебника, который делает таймер обратного отсчета с минутами и секундами. Там один или два, но они вроде плохие.
import UIKit
class HomeViewController: UIViewController {
@IBOutlet weak var focusSession: UILabel!
@IBOutlet weak var breakSession: UILabel!
var prodSeconds = String() // This value is set in a different view controller
lazy var intProdSeconds = Int(prodSeconds)
var timer = Timer()
var isTimerRunning = false // Make sure only one timer is running at a time
override func viewDidLoad() {
super.viewDidLoad()
if isTimerRunning == false {
runProdTimer()
}
//focusSession.text = String(prodMinutes) + ":" + String(prodSeconds) // Ignore this for now stack overflow ppl
}
func runProdTimer() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(HomeViewController.updateProdTimer)), userInfo: nil, repeats: true)
isTimerRunning = true
}
@objc func updateProdTimer() {
if intProdSeconds! < 1 {
timer.invalidate()
focusSession.text = "00:00"
}
else {
intProdSeconds! -= 1
focusSession.text = prodTimeString(time: TimeInterval(prodSeconds)!)
}
}
func prodTimeString(time: TimeInterval) -> String {
let prodMinutes = Int(time) / 60 % 60
let prodSeconds = Int(time) % 60
return String(format: "%02d:%02d", prodMinutes, prodSeconds)
}
}
Пользователь вводит свое время, и оно сохраняется в переменной prodSeconds
, которая затем преобразуется в Int
ниже ее с помощью переменной lazy
.
Однако таймер по-прежнему не ведет обратный отсчет , когда я запускаю приложение.
Предположительно, это просто таймер для секунд, который я следовал из другого урока. Но все, что происходит, это то, что метка, отображающая таймер, просто отображает число, введенное пользователем, в формате 00:prodSeconds
и фактически не ведет обратный отсчет.
P.S. Не беспокойтесь о реализации кнопки пуска / остановки на данный момент. В моем случае таймер должен запускаться при загрузке представления.