2015-08-30 12 views
5

स्विफ्ट में आज विजेट को अपडेट करने के लिए कैसे करें मैं अपने एक्स विजेट सेकंड की सामग्री को अपडेट करने का प्रयास करता हूं क्योंकि मैं एक डायशो की तरह कुछ महसूस करने की कोशिश करता हूं। इसलिए मैंने साझा डिफ़ॉल्ट का उपयोग करके सभी आवश्यक डेटा संग्रहीत किए हैं। स्टोरेज से डेटा लोड करना सही काम करता है लेकिन पूरा होने का विस्तार:प्रत्येक एक्स सेकंड

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

केवल एक बार बुलाया जाता है। मैं एक फ़ंक्शन को कैसे कार्यान्वित कर सकता हूं जो कहता है कि "नया डेटा" हर एक्स सेकंड में उपलब्ध है?

उत्तर

2

मदद कर सकता है एक तरह से NSTimer है। यह प्रत्येक एक्स सेकंड विधि को कॉल करने के लिए उपयोगी है।

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 सेकंड।

+0

यह सही काम करता है! धन्यवाद! –

+0

@Floler आपका स्वागत है! – pixyzehn

1

ऐसा करने का बहुत कुछ तरीका है। एक तरीका पर्यवेक्षक जोड़ना है।

इस

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


func updateStuff() -> Void{ 

    // Update your Stuff... 
} 

की तरह तो चुनाव अपने आज विजेट कक्षा में एक समारोह कॉल।

तो आपका विजेट आपके कार्य को कॉल करेगा जब आपका व्यापक अग्रभूमि प्रवेश करेगा।

ध्यान दें कि आपके widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) वेब से सामग्री लोड करने के लिए है। की तुलना में आप एक पर्यवेक्षक

की जरूरत नहीं है मुझे आशा है कि मैं तुम्हें

संबंधित मुद्दे