2015-08-30 39 views
5

Günümüzün widget'ının içeriğini her x saniyede bir güncellemeye çalışıyorum çünkü bir diashow gibi bir şey gerçekleştirmeye çalışıyorum. Bu nedenle tüm gerekli verileri paylaşılan varsayılanlar kullanarak sakladım. Depolamadan veri yüklemesi mükemmel ancak uzantının tamamlanması tamamlandı:Bugün widget'ı her x saniyede bir güncellenir.

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

Yalnızca bir kez çağrılır. Her x saniyede "newData" nın mevcut olduğunu söyleyen bir işlevi nasıl uygulayabilirim?

cevap

2

yardımcı olabilir umuyoruz. Her x saniyede bir arama yöntemi için kullanışlıdır.

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 
} 

Bu durumda, animateFrame öğesini çağırabilirsiniz: her 3 saniyede.

+0

Mükemmel çalışıyor! Teşekkürler! –

+0

@Floler Hoş Geldiniz! – pixyzehn

1

Bunu yapmanın pek çok yolu var. Bir yol bir gözlemci eklemektir. Bu

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


func updateStuff() -> Void{ 

    // Update your Stuff... 
} 

gibi

Yani Seçim sizin Bugün Widget sınıfında bir işlevini çağırır.

Genişliğiniz ön plana girdiğinde, Widget'ınız işlevinizi çağırır.

Not: widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) Web'den içerik yüklemek için var mı. Eğer bir gözlemci

gerekmez Daha ben tek yön NSTimer olduğunu sana