2015-01-18 8 views
6

मैं सोच रहा था कि आज के विजेट में टाइमर के टेक्स्ट लेबल को अपडेट करना संभव है। मैंने चारों ओर एक नज़र डाली लेकिन कुछ भी मेरी मदद नहीं की।क्या आज के विजेट में टाइमर रीफ्रेश करना संभव है?

+0

मुझे लगता है कि ऐसा करने का एकमात्र तरीका मुख्य दृश्य नियंत्रक के NSTimeInterval को पास करना और आज विजेट में एक और टाइमर बनाना है। मैं एक तरीका समझूंगा:] – Nicholas

उत्तर

6

हाँ आप कर सकते हैं। मैंने अभी परीक्षण किया है और यह काम करता है। तुम सिर्फ मुख्य रन पाश NSRunLoopCommonModes करने के लिए अपने टाइमर जोड़ने के लिए:

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

आपके उत्तर के लिए धन्यवाद मुझे इसे अपने कोड में रखना होगा क्योंकि मेरा टाइमर मुख्य दृश्य नियंत्रक में चल रहा है और मैं व्यू कंट्रोलर से उस टाइमर को NSUserDefaults और – Nicholas

+0

का उपयोग करके आजव्यू कंट्रोलर से पास करने की कोशिश कर रहा हूं, अपने कोड के साथ एक और प्रश्न खोलने के लिए स्वतंत्र महसूस करें, मैं इसे आपके लिए देख सकता हूं –

2

मैं जानता हूँ कि यह एक स्विफ्ट सवाल यह है, लेकिन मैं इसे ऑब्जेक्टिव-सी कोड की तलाश और इसलिए दूसरों के भी हो सकता है पाया ।

-(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 
} 
संबंधित मुद्दे