Подтвердить что ты не робот

Какова цель widgetPerformUpdateWithCompletionHandler в iOS 8 Today Widget?

Оглядываясь за ответом, но все кажется расплывчатым или неясным.

В любом случае, просто хочу знать, какова цель функции:

widgetPerformUpdateWithCompletionHandler

в сегодняшнем виджетах.

Согласно Apple:

Этот метод вызывается, чтобы дать виджете возможность обновить его содержимого и перерисовать его представление перед операцией, такой как моментальный снимок. Когда виджет завершит обновление своего содержимого (и перерисовки, если необходимо), виджет должен вызывать блок обработчика завершения, передавая соответствующее значение NCUpdateResult.

Когда происходит моментальный снимок? Всякий раз, когда я отлаживаю расширение, widgetPerformUpdateWithCompletionHandler всегда вызывается после loadView. Итак, в чем цель явной перезагрузки информации в этом методе, когда я уже загружаю информацию в loadView?


Согласно этому сайту: http://www.karlmonaghan.com/tag/today-widget/

В TodayViewController есть два места, которые необходимо загрузить данные из сети - когда создается виджет и когда Вызывается widgetPerformUpdateWithCompletionHandler. Для первого я загружать сообщения в viewDidLoad, чтобы они были готовы к моменту времени отображается виджет. Когда iOS думает, что виджет будет отображаться пользователь после его первого показа, widgetPerformUpdateWithCompletionHandler называется, давая виджету возможность обновления отображаемых сообщений.

Тот же вопрос, что и выше.

4b9b3361

Ответ 1

Виджет не создается при каждом просмотре центра уведомлений, поэтому loadView не будет вызываться каждый раз, когда он отображается. Центр уведомлений вместо этого обращается к widgetPerformUpdateWithCompletionHandler, когда считает, что информация о виджетах должна быть обновлена. Из моей собственной отладки это выглядит так, когда изначально созданный виджет widgetPerformUpdateWithCompletionHandler называется почти сразу, поэтому вы можете просто выполнить всю загрузку, но Apple рекомендует начать процесс загрузки как можно раньше на жизненном цикле.

Если информация, которую показывает ваш виджет, никогда не изменяется, вам не нужно ничего делать в widgetPerformUpdateWithCompletionHandler.