Когда будет вызван метод getPlaceholderTemplateForComplication ()?

Я пытаюсь создать простой шаблон усложнения для приложения WatchOS, но я застрял, пытаясь понять, когда будет вызван метод ComplicationController класса getPlaceholderTemplateForComplication().

В документации Apple говорится

Когда ваше приложение запускается впервые, ClockKit вызывает этот метод,

но если я запускаю симулятор, он чаще всего не срабатывает.

Отключение и повторное включение «Показать приложение на Apple Watch» не помогает.

Когда будет вызван getPlaceholderTemplateForComplication() метод?


person Julsteri    schedule 29.06.2016    source источник
comment
отредактируйте свой вопрос: а) укажите, что заполнитель не отображается при настройке циферблата, и б) добавьте свой getPlaceholderTemplateForComplication код.   -  person    schedule 30.06.2016
comment
Шаблон заполнителя отображается в приложении после вызова метода заполнителя. Это нормальное поведение, и у меня нет с этим проблем. Проблема в том, что метод не всегда вызывается, и мне нужно знать, как и когда он должен выполняться.   -  person Julsteri    schedule 01.07.2016
comment
Система вызывает метод один раз, затем кэширует результат. Он не будет вызывать метод каждый раз, когда вы настраиваете циферблат. Вместо того, чтобы спрашивать, как или почему система что-то делает, вы должны описать симптом, который вы испытываете. Появляется ли заполнитель при настройке или нет? Также покажите код. Проблема более вероятна в вашем коде, чем в том, вызывает ли система ваш метод или нет, поскольку система оптимизирована, чтобы знать, когда ее вызывать или нет.   -  person    schedule 01.07.2016


Ответы (1)


Шаблон-заполнитель вызывается, когда вы настраиваете циферблат и выбираете, какое усложнение будет отображаться. Система вызывает getPlaceholderTemplateForComplication() один раз, а затем кэширует результат. Он не будет вызывать метод каждый раз, когда вы настраиваете усложнение.

По мере того, как вы прокручиваете варианты сложности, показываемые статические детали являются деталями, возвращаемыми для шаблона заполнителя.

Как только ваше усложнение становится активным - отображается на циферблате - шаблон-заполнитель не вызывается. Вместо этого записи временной шкалы берутся из этого источника данных сложности методы:

  • getCurrentTimelineEntryForComplication, и, возможно, из
  • getTimelineEntriesForComplication, если поддерживается путешествие во времени.

Установка или удаление приложения для часов не имеет ничего общего с шаблоном заполнителя.

Для watchOS 3:

watchOS 3 поддерживает галерею лиц, которая позволяет пользователю видеть и настраивать циферблаты и дополнительные функции. Статические данные усложнения, показанные в галерее, также поступают из шаблона заполнителя.

person Community    schedule 29.06.2016
comment
Я запускаю схему приложения watchkit на симуляторе iPhone + Apple Watch. Я также добавил точки останова во все упомянутые вами методы. Выполнение не достигает точки останова в getPlaceholderTemplateForComplicationmethod, как вы описали. Я попробовал настроить циферблат и пролистать список сложностей. Мое осложнение оказалось пустым. Мне нужно как-то сбрасывать кеш часов? Я пробовал сбросить содержимое и настройки в симуляторах. - person Julsteri; 30.06.2016
comment
Он не достигнет этой точки останова, потому что вы не отлаживаете, что делают часы, когда настраивают циферблат. Система создала экземпляр вашего контроллера сложности, но вы не можете подключиться к нему или отладить его в интерактивном режиме. Но проблема не в отладке. Возможно, вам следует отредактировать свой вопрос и описать, что вы имеете в виду, когда ваше осложнение отображается как пустое. Во время настройки циферблата или когда он активен на циферблате? - person ; 30.06.2016
comment
Вы имеете в виду, что симулятор может работать после контрольных точек? По моему опыту, иногда он полностью достигает контрольных точек, но не всегда. Кроме того, под пустым я подразумеваю, что когда я прокручиваю до своего усложнения в режиме настройки, имя моего усложнения отображается рядом с контейнером, но контейнер пуст. Это означает, что система никогда не кэшировала шаблоны усложнений. - person Julsteri; 30.06.2016