如何在 swift 每 x 秒更新今天的小部件

How to update today widget in swift every x seconds

我尝试每 x 秒更新一次今天的小部件扩展的内容,因为我试图实现类似显示的东西。因此,我使用共享默认值存储了所有必需的数据。从存储中加载数据工作完美,但扩展的 completionHandler:

    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
        //I do load the content here 
        completionHandler(NCUpdateResult.NewData)
    }

只调用一次。我如何实现一个函数,表示 "newData" 每 x 秒可用一次?

有很多方法可以做到这一点。一种方法是添加观察者。

像这样

NSNotificationCenter.defaultCenter().addObserver(self, selector:"updateStuff", name:
        UIApplicationWillEnterForegroundNotification, object: nil)


func updateStuff() -> Void{

  // Update your Stuff...
}

所以 Selection 调用了 Today Widget 中的一个函数 class。

因此,当您的宽屏进入前景时,您的 Widget 将调用您的函数。

请注意,您的 widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) 是否可以从 Web 加载内容。比起你不需要观察者

希望能帮到你

一种方法是 NSTimer。它对于每 x 秒调用一次方法很有用。

var timer : NSTimer?

override func viewDidLoad() {
    super.viewDidLoad()

    timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "animateFrame:", userInfo: nil, repeats: true)
}

func animateFrame(timer: NSTimer) {
    // Do something
}

这种情况下,可以每3秒调用一次animateFrame: