2016-02-25 2 views
5

В моем приложении Apple Watch есть два подкласса WKInterfaceController. Первый - это вход в другой, их отношения - nextPage с интерфейсом Builder. Для методов awakeWithContext, willActivate и didDeactivate в каждом интерфейсе ControlController я распечатал их все при запуске приложения для просмотра.Каков жизненный цикл приложения Watch?

И я получил этот результат:

awakeWithcontext -> First 
awakeWithContext -> Second 
willActivate -> First 
willActivate -> Second 
didDeactivate -> Second 

и я красть к следующему InterfaceController:

willActivate -> Second 
didDeactivate -> First 

Так что теперь вопрос:

Будет все awakeWithContext метод всех InterfaceControllers в приложении Watch при запуске?

Как насчет метода willActivate?

ответ

0

awakeWithContext вызывается при инициализации. Этот метод будет вызываться на всех ваших страницах в приложении часов при запуске.

willActivate вызывается, когда контроллер интерфейса должен быть отображен. Причина, по которой вызывается ваш второй контроллер интерфейса willActivate, за которым следует didDeactivate, заключается в том, что это следующая страница, которая может быть на экране. Это происходит, чтобы помочь загрузить следующий контроллер интерфейса с соответствующими данными, так как он скоро появится на экране.

Таким образом, если бы у вас был контроллер интерфейса 3-й страницы, то он будет вызываться, когда 2-й интерфейсный контроллер находится на экране, его willActivate, за которым следует didDeactivate.

Apple DocwillActivate. Page-based navigation на часах не может прямо сказать это, но они всегда помогают читать.

5

Жизненный цикл приложений watchOS описан ниже.

awakeWithContext

При инициализации страницы awakeWithContext будет называться. Это первый метод, который будет вызываться, и пока не отображается UI.

Вы должны сделать что-то вроде обновления массивов моделей для просмотра таблиц, настройки свойств и т. Д. В awakeWithContext. Этот метод очень похож на инициализаторы в простых классах (init()), но на этот раз в WKInterfaceController s.

Ответ ваш первый вопрос:

awakeWithContext будет называться на всех страницах сайта, как только приложение запусках watchOS .

willActivate

Когда контроллер интерфейса собирается быть отображены, willActivate будет называться.

Вы должны обновлять значения ярлыков, действия и все, что связано с элементами вида.

Ответ Ваш второй вопрос:

willActivate будет называться на всех страницах сайта, как только приложение watchOS запусков, но в отличие от awakeWithContext, это будет называться снова, как только вы смотрите контроллер (другими словами, когда вы перейдите к этому желаемому интерфейсу).

Впервые вы запускаете приложение, все контроллеры didDeactivate будет называться, кроме текущего, и при переходе к другому, его willActivate будет называться до didDeactivate называют на первое.

Таким образом, жизненный цикл:

1- awakeWithContext всех просмотров

2- willActivate всех просмотров

3- didDeactivate из всех окон, кроме первого (текущего)

И когда ударяя на второе:

1- willActivate второго вида

2- didDeactivate с первого взгляда

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

  • Нет связанных вопросов^_^