2015-08-30 3 views
5

Я пытаюсь обновить содержимое моего сегодняшнего расширения виджета каждые x секунд, так как я пытаюсь реализовать что-то вроде диаспоры. Поэтому я сохранил все необходимые данные, используя общие значения по умолчанию. Загрузка данных из хранилища прекрасна, но завершение. Хендлер расширения:Как обновить сегодня виджет в swift каждые x секунд

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

Вызывается только один раз. Как я могу реализовать функцию, которая говорит, что «newData» доступен каждые x секунд?

ответ

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 
} 

В случае, вы можете вызвать aimateFrame: каждые 3 секунды.

+0

Он отлично работает! Благодаря! –

+0

@Floler Добро пожаловать! – pixyzehn

1

Существует много способов сделать это. Один из способов - добавить Наблюдателя.

Как это

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


func updateStuff() -> Void{ 

    // Update your Stuff... 
} 

Так Выбор вызывает функцию в классе Сегодня Widget.

Таким образом, ваш виджет будет называть вашу функцию, когда ваш более широкий вход будет на переднем плане.

Обратите внимание, что ваш widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) Можно ли загружать контент из Интернета. Чем вам не нужен наблюдатель

Я надеюсь, что я мог бы помочь вам

Смежные вопросы