如何在每次更改时更新标签?

时间:2017-09-24 16:31:32

标签: ios swift xcode time

所以我一直在搜索Stackoverflow,以便在时间变化时如何更新标签,但到目前为止结果并不令人满意。大多数人使用计时器,而这不是我想要的。

我想要的是,如果状态栏时间为8:52 PM,并且某个任意公交车离开9:00 PM,那么我希望标签显示8 min。然后,如果时间更改为8:53 PM,我希望标签显示7 min

我更喜欢某种通知或委派方法,而不是设置计时器。

如果有人对我应该做什么有任何建议(或任何第三方图书馆可以通知,如果时间有变化)那就太棒了!

1 个答案:

答案 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())"
      }
    }
  }