如何在 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:
我尝试每 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: