2016-02-25 92 views
5

我的Apple Watch應用程序中有兩個WKInterfaceController的子類。 第一個是另一個的入口,它們與Interface Builder的關係是nextPage。 對於每個InterfaceController中的awakeWithContext,willActivatedidDeactivate方法,我在觀看應用程序啓動時全部打印出來。Watch App的生命週期是什麼?

而且我得到了這樣的輸出:

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

,我刷到下一個InterfaceController:

willActivate -> Second 
didDeactivate -> First 

所以,現在的問題是:

都將所有InterfaceControllers的awakeWithContext方法Watch應用程序只要啓動就會被解僱?

那麼willActivate方法呢?

回答

0

awakeWithContext在初始化時被調用。此方法將在啓動時在您的手錶應用中的所有頁面上調用。

willActivate當接口控制器即將被顯示時被調用。您的第二個界面控制器willActivate後跟didDeactivate的原因是因爲它是可以在屏幕上顯示的下一個頁面。發生這種情況是爲了幫助下一個接口控制器加載相關數據,因爲它很快會出現在屏幕上。

因此,如果您有第3頁的界面控制器,當第2界面控制器在屏幕上時,它將被調用,其willActivate後跟didDeactivate將被調用。

Apple Doc on willActivate。手錶上的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-的所有視圖

3-所有視圖didDeactivate,除了第一個willActivate(當前的)

,然後滑動到第二時:

1- willActivate第二視圖

2- didDeactivate第一視圖

相關問題