2015-08-30 14 views
5

Ich versuche, den Inhalt meiner heutigen Widget-Erweiterung alle x Sekunden zu aktualisieren, da ich versuche, etwas wie eine Diashow zu realisieren. Daher habe ich alle benötigten Daten mit gemeinsamen Standards gespeichert. Laden von Daten aus dem Speicher funktioniert perfekt, aber die CompletionHandler der Erweiterung:Wie aktualisiere ich heute Widget in swift alle x Sekunden

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

Wird nur einmal aufgerufen. Wie kann ich eine Funktion implementieren, die besagt, dass "newData" alle x Sekunden verfügbar ist?

Antwort

2

Der eine Weg NSTimer ist helfen könnte. Es ist nützlich, alle x Sekunden Methoden aufzurufen.

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 
} 

Im Fall können Sie animateFrame nennen: alle 3 Sekunden.

+0

Es funktioniert perfekt! Vielen Dank! –

+0

@Floler Sie sind herzlich willkommen! – pixyzehn

1

Es gibt viele Möglichkeiten, dies zu tun. Eine Möglichkeit besteht darin, einen Beobachter hinzuzufügen.

Gefallen Sie diese

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


func updateStuff() -> Void{ 

    // Update your Stuff... 
} 

So ruft die Auswahl eine Funktion in Ihrer Heute-Widget-Klasse.

Ihr Widget wird also Ihre Funktion aufrufen, wenn Ihr breiterer Vordergrund eintritt.

Beachten Sie, dass Ihre widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) Gibt es Inhalte aus dem Web laden. Als Sie

keine Beobachter brauchen hoffe ich Sie