接上篇:Glance開發基礎。翻譯自蘋果官方文檔WatchKit Programming Guide: Managing Your Glance Interface。
當添加Watch app target到你的Xcode工程當中時,你能指定是否需要一個glance界面。如果你在一開始忘了添加,也能稍後向工程中加入glance。一個glance界面控制器在storyboard中的顯示有些不一樣的地方,特別是,它有一個Glance入口點對象,就像圖片 13-1顯示的一樣。
圖片 13-1 一個擁有glance入口點對象的界面控制器
Glance界面由自定義的WKInterfaceController
子類驅動,此子類的實現方式和其他界面控制器類相同。
實現一個Glance界面控制器
Glance界面控制器的具體實現比較簡單,因為它唯一的任務是設置glance中的標簽和圖像內容。所以你的glance基本上只需要實現兩種方法:
使用initWithContext:
方法來初始化你的glance界面,並且設置標簽和圖像的初始值。
基於內容的改變,使用willActivate
來更新glance。
當glance已經顯示給用戶後,如需更新,使用NSTimer
對象,你也能使用WKInterfaceDate
和 WKInterfaceTimer
類來顯示日期和時間信息,以及倒計時或者顯示特定時間。
自定義從Glance啟動應用
當用戶觸摸glance,Apple Watch能夠啟動對應的Watch app。一般來說,啟動app將顯示它的主界面控制器。如果你想顯示一個不同的界面控制器,調用你的glance界面控制器的updateUserActivity:userInfo:
方法。
調用updateUserActivity:userInfo:
方法將告訴WatchKit來請求啟動時需要顯示的界面控制器。在啟動進程當中,WatchKit調用主界面控制器的actionForUserActivity:context:
方法來找出到底需要顯示哪個界面控制器。在你的Watch app的主界面控制器裡實現這個方法,並讓它返回你需要的界面控制器名稱。通過這個方法,你也能提供一個上下文對象,並將它作為參數傳遞給指定的界面控制器的initWithContext:
方法。
總結一下,為了在觸摸glance時啟動並顯示一個不同的界面控制器,你需要按如下步驟操作:
在glance界面控制器中:
配置glance的initWithContext:
和 willActivate
,這一步和其他情況是相同的。
調用updateUserActivity:userInfo:
方法,並且使用userinfo
參數來傳達你的應用glance的狀態。
在你的應用的主界面控制器:
實現actionForUserActivity:context:
方法,使用提供的userinfo
字典來確定顯示哪個界面控制器,你還應該生成一個上下文對象並將它傳遞給指定的界面控制器。