2015-01-18 3 views
6

Ich frage mich, ob es möglich ist, die Textbezeichnung eines Timers in einem heutigen Widget zu aktualisieren. Ich schaute mich um, aber nichts half mir.Ist es möglich, einen Timer in einem Today Widget zu aktualisieren?

+0

Ich denke, dass die einzige Möglichkeit, dies zu tun ist, übergeben Sie die NSTimeInterval der Hauptansicht Controller und einen anderen Timer in der heutigen Widget erstellen. Ich werde einen Weg herausfinden:] – Nicholas

Antwort

6

Ja, Sie können. Ich habe es gerade getestet und es funktioniert. Sie müssen nur Ihre Timer auf die Hauptlaufschleife NSRunLoopCommonModes hinzuzufügen:

RunLoop.main.add(yourTimerName, forMode: .commonModes) 

import NotificationCenter 

class TodayViewController: UIViewController, NCWidgetProviding { 

    @IBOutlet weak var strTimer: UILabel! 

    var timer = Timer() 

    func updateInfo() { 
     strTimer.text = Date().description 
    } 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateInfo), userInfo: nil, repeats: true) 
     RunLoop.main.add(timer, forMode: .commonModes) 
    } 
    func widgetPerformUpdate(completionHandler: @escaping (NCUpdateResult) -> Void) { 
     completionHandler(.newData) 
    } 
} 
+1

https://dl.dropboxusercontent.com/u/87285547/todayTimer.zip –

+0

danke für deine Antwort Ich muss das in meinen Code einfügen, da mein Timer im Hauptansicht-Controller läuft und ich versuche, diesen Timer vom View-Controller auf den todayviewcontroller mit NSUserDefaults und Gruppen – Nicholas

+0

zu übergeben, fühlen Sie sich frei, eine andere Frage mit Ihrem Code zu öffnen Ich werde es für Sie betrachten –

2

Ich weiß, das ist ein Swift Frage, aber ich fand suchen es für Objective-C-Code und so andere können auch .

-(void) viewDidLoad 
{ 
    [NSTimer scheduledTimerWithTimeInterval:1 // update more than once a second to appear in sync with the system clock 
            target:self 
            selector:@selector(updateTimes:) 
            userInfo:nil 
            repeats:YES]; 

} 


-(void) updateTimes:(NSTimer *)timer 
{ 
    // Update Widget UI as required 
} 
Verwandte Themen