Какова цель widgetPerformUpdateWithCompletionHandler в iOS 8 Today Widget?
Я искал ответ, но все кажется расплывчатым или неясным.
В любом случае, просто хочу узнать, какова цель функции:
widgetPerformUpdateWithCompletionHandler
делает в виджете сегодня.
По словам Apple:
Этот метод вызывается, чтобы дать виджету возможность обновить его содержимое и перерисовать его представление перед операцией, такой как снимок. Когда виджет заканчивает обновлять свое содержимое (и перерисовывать, если необходимо), виджет должен вызывать блок обработчика завершения, передавая соответствующее значение NCUpdateResult.
Когда снимок случается? Всякий раз, когда я отлаживаю расширение, widgetPerformUpdateWithCompletionHandler всегда вызывается после loadView. Так, какова цель явной перезагрузки информации в этом методе, когда я уже загружаю информацию в loadView?
По данным этого сайта: http://www.karlmonaghan.com/tag/today-widget/
В TodayViewController есть два места, которые должны загружать данные из сети - когда создается виджет и когда вызывается widgetPerformUpdateWithCompletionHandler. Для первых я загружаю посты в viewDidLoad, чтобы они были готовы к моменту отображения виджета. Когда iOS думает, что виджет будет отображаться пользователю после его первого отображения, вызывается widgetPerformUpdateWithCompletionHandler, дающий виджету возможность обновлять отображаемые сообщения.
Тот же вопрос, что и выше.
1 ответ
Виджет не создается каждый раз, когда вы просматриваете центр уведомлений, поэтому loadView
не будет вызываться каждый раз, когда он отображается. Центр уведомлений вместо звонков widgetPerformUpdateWithCompletionHandler
когда он думает, что информация виджета должна быть обновлена. Из моей собственной отладки это выглядит так, когда виджет изначально создается widgetPerformUpdateWithCompletionHandler
вызывается почти сразу, так что вы можете просто выполнить всю загрузку, но Apple рекомендует начать процесс загрузки как можно раньше в жизненном цикле.
Если информация, отображаемая вашим виджетом, никогда не меняется, вам не нужно ничего делать в widgetPerformUpdateWithCompletionHandler
,