所以我一直在搜索Stackoverflow,以便在时间变化时如何更新标签,但到目前为止结果并不令人满意。大多数人使用计时器,而这不是我想要的。
我想要的是,如果状态栏时间为8:52 PM
,并且某个任意公交车离开9:00 PM
,那么我希望标签显示8 min
。然后,如果时间更改为8:53 PM
,我希望标签显示7 min
。
我更喜欢某种通知或委派方法,而不是设置计时器。
如果有人对我应该做什么有任何建议(或任何第三方图书馆可以通知,如果时间有变化)那就太棒了!
答案 0 :(得分:0)
您的选择有限。如果您的应用未在前台运行,则仅限于本地通知,该通知会向用户显示警报。每分钟使用一次对用户来说太糟糕了。
当你的应用程序到达前台时,你可以启动一个计时器,该计时器每分钟都会启动,并使用它来更新应用程序中的标签:
weak var timer: Timer?
func startTimer() {
timer?.invalidate()
let interval = Double(Date().timeIntervalSinceReferenceDate)
let delay = 60 - fmod(interval, 60.0)
message.text = "Delay = \(delay)"
//Create a "one-off" timer that fires on the next even minute
let _ = Timer.scheduledTimer(withTimeInterval: delay, repeats: false ) { timer in
self.message.text = "\(Date())"
self.timer = Timer.scheduledTimer(withTimeInterval: 60.0,
repeats: true ) { timer in
//Put your repeating code here.
self.message.text = "\(Date())"
}
}
}