2015-01-18 16 views
6

Mi chiedevo se fosse possibile aggiornare l'etichetta di testo di un timer in un widget di oggi. Ho dato un'occhiata in giro ma nulla mi ha aiutato.È possibile aggiornare un timer in un widget Today?

+0

Penso che l'unico modo per farlo sia passare NSTimeInterval del controller di visualizzazione principale e creare un altro timer nel widget di oggi. Troverò un modo:] – Nicholas

risposta

6

Sì, è possibile. Ho appena provato e funziona. Basta aggiungere la timer per le principali NSRunLoopCommonModes ciclo di esecuzione:

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

grazie per la tua risposta Devo metterlo nel mio codice poiché il mio timer è in esecuzione nel controller della vista principale e sto provando a passare quel timer dal controller della vista al controller todayview usando NSUserDefaults e ai gruppi – Nicholas

+0

sentiti libero di aprire un'altra domanda con il tuo codice. Ti darò un'occhiata per te –

2

So che questa è una domanda Swift, ma ho trovato alla ricerca di codice Objective-C e così gli altri possono anche .

-(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 
}