У меня трудности с попыткой связать два таймера вместе.Я пытаюсь получить таймер обратного отсчета от указанной суммы и второй таймер постоянно обновляет метку на контроллере представления.Тем не менее, я получаю таймер, который обновляет метку, отставая ровно на 1 секунду от первого таймера в классе таймеров.Вот что у меня есть для контроллера представления: (обратите внимание, что это сжатая версия моего кода)
class HomeViewController: UIViewController {
@IBOutlet var timeLabel: UILabel!
override func viewDidLoad() {
timeLabel.text = account.deedManager.globalTimer.timerStr
Timer.scheduledTimer(timeInterval: 0.05, target: self, selector: #selector(UpdateTime), userInfo: nil, repeats: true)
}
@objc func UpdateTime() {
self.timeLabel.text = account.deedManager.globalTimer.timerStr
}
}
А вот класс Timer:
class TimerModel: NSObject, NSCoding {
var myTimer: Timer? = Timer()
var timerInterval: TimeInterval = 1.0
var timerEnd: TimeInterval = 0.0
var timerCount: TimeInterval = 86400.0 // 24 hours
var timerStr: String = "TIME"
func StartTimer(time: Double) {
timerCount = time
myTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(UpdateTime), userInfo: nil, repeats: true)
}
@objc func UpdateTime() {
self.timerStr = self.TimerDate(time: self.timerCount)
self.timerCount-=1
print(self.timerStr)
}
func TimerDate(time:TimeInterval) -> String {
let hours = Int(time) / 3600
let minutes = Int(time) / 60 % 60
let seconds = Int(time) % 60
return String(format: "%02i:%02i:%02i", hours, minutes, seconds)
}
}
Я пробовалсделать первый таймер интервалом 0,05, чтобы он обновлялся быстрее, чем класс таймера, но он отстает ровно на секунду, независимо от того, на каком интервале я его установил.Я не хочу помещать таймер обратного отсчета внутри контроллера представления, поскольку я хочу, чтобы таймер был глобальным для всех контроллеров представления.Если у вас есть идеи, дайте мне знать.