對於內容超過一屏的WatchKit app來說,您必須在設計時選擇一個導航型別。您所選擇的導航型別定義瞭如何在應用程式中展示和管理介面控制器。WatchKit支援兩種互斥的介面風格:
- 分層風格
- 分頁風格
這兩種導航都可以模態形式展示一個或多個介面。當您想暫時打斷使用者的工作流程以請求輸入或者展示資訊時,適合使用模態形式。當模態地展示兩個或多個介面控制器時,系統會以一系列的頁面展示它們,類似於基於分頁的導航。
實現分層介面(Implementing a Hierarchical Interface)
分層介面主要針對分層的資料集,使用者可在此選擇某個條目以展示相關詳細資訊。分層介面通常始於單個的根介面控制器。在該介面控制器中,您可以通過呼叫當前介面控制器的pushControllerWithName:context:方法在螢幕上推出一個新的介面控制器。通常,當使用者點選按鈕或表格行時,您可以從動作方法中呼叫該方法。每個新的介面控制器可展示下一級分層中的資訊。
當在螢幕上推出新的介面控制器時,會將資料物件傳遞給pushControllerWithName:context:方法的上下文引數。在新介面控制器展示在螢幕上之前,這個上下文物件就是您與其通訊的機會。您可以使用該物件來告知介面控制器展示什麼樣的資料或者傳達什麼樣的狀態資訊。
想要解除介面控制器,可呼叫其popController方法。使用者也可以直接從螢幕的左邊緣輕掃解除介面控制器。介面控制器解除後即失效,而先前的介面控制器將會重新展示。根介面控制器不能被解除。
實現基於分頁的介面(Implementing a Page-Based Interface)
基於分頁的介面主要針對本質上沒有分層的資料。分頁介面包含兩個或者多個獨立的介面控制器,並且在指定時間內僅展示其中一個介面。在執行時,通過向左/右輕掃螢幕進行導航。螢幕底部的圓點指示器控制元件指示使用者當前的位置。
在設計過程中,您可以建立下一頁的segue,以便在app的storyboard檔案中配置分頁介面。想要建立該segue:
1.對您希望作為第一屏的介面控制器執行Control-click操作,並將其拖拽到不同的介面控制器中。
應該強調第二個介面控制器,以指明segue是可用的。
2.釋放滑鼠按鈕。
3.從relationship segue皮膚中選擇next page。
通常在storyboard檔案中配置一組初始的頁面集合。當app啟動時,WatchKit會例項化和初始化您的初始介面控制器,然後是分頁介面中的其他介面控制器。如果您想改變一組介面控制器,請在初始介面控制器的init方法中呼叫reloadRootControllersWithNames:contexts:方法。呼叫該方法會使得WatchKit在嘗試展示介面中任何其他頁面之前載入新的介面控制器。您也可以在app執行時呼叫reloadRootControllersWithNames:contexts:方法來改變展示中的頁面集合。
當系統載入您的WatchKit app介面時,它將例項化和初始化組成介面的所有介面控制器。當使用者從一個介面控制器切換至下一個時,它將呼叫當前介面控制器的didDeactivate方法,以及即將展示的介面控制器的willActivate方法。willActivate方法可確保介面中的資訊是最新的。
以模態形式展示介面控制器(Presenting Interface Controllers Modally)
模態介面可臨時中斷當前導航流以提示使用者或者展示資訊。您可以使用分頁介面或分層介面來組成一個模態介面。想要模態地展示介面控制器,請從當前可視介面中呼叫以下方法之一:
- 呼叫presentControllerWithName:context:方法來模態地展示單個介面控制器。
- 呼叫presentControllerWithNames:contexts:方法展示兩個或者多個使用分頁佈局的介面控制器。
模態介面的左上角包含一個文字標籤,當點選時會解除介面。如果您沒有為該標籤指定一個準確的字串,那麼WatchKit會自動為其使用”Cancel”。您可以根據需要更改字串,以反映解除模態檢視的真實用意。比如,當展示那些您不希望使用者響應的內容時,您可能會將字串更改為”Done”或 “Close”。如果您使用了”Cancel”字串,那要考慮為接受模態介面中的任何更改新增一個或多個按鈕。