WatchOS中的導航非常有限, 不像在iOS中, 你甚至可以自定義導航系統(tǒng), 在使用導航之前, 先熟悉下在WatchOS中的幾種導航方式.
有三種導航方式
? Hierarchical:類似于UINavigationController.
? Page-based:類似于UIPageViewController.
? Modal: 類似于模態(tài)
Hierarchical navigation
分層導航將是iOS開發(fā)人員最熟悉的概念之一。在UIKit中,UINavigationController管理push和pop子控制器及其動畫。
WatchKit有一個非常相似的系統(tǒng):
?您可以將WKInterfaceController的實例push導航堆棧。
?內(nèi)置滑動手勢和后退按鈕。
?您可以使用故事板設置導航,也可以在代碼中執(zhí)行。
WatchKit不是擁有主導航控制器,而是為您處理所有導航。您可以簡單地從按鈕控制拖動到控制器,或者直接在代碼中調(diào)用self.pushController(withName: <#T##String#>, context: <#T##Any?#>)
使用分層導航系統(tǒng)時,WatchKit為您提供可選的上下文參數(shù),您可以在導航時在控制器之間傳遞。
控制器之間的通信一直是困難的。在WatchKit中使用上下文傳遞將使您的應用程序的架構保持干凈。
代碼設置導航, 傳參
open func pushController(withName name: String, context: Any?)
name參數(shù)為要顯示的接口控制器的名稱。 在您的故事板中,接口控制器的名稱存儲在對象的Identifier屬性中,該屬性位于屬性檢查器中。
context參數(shù)為要傳遞的參數(shù)
storyboard設置
push操作和iOS一樣, 直接拉線就可以了. 關于傳參則使用
override func contextForSegue(withIdentifier segueIdentifier: String) -> Any? {
return ["key":"value"]
}
只需要在這個方法中返回你要傳遞的參數(shù)就可以了
接受參數(shù)
context保存的就是參數(shù), 是一個可選值, 使用時一定要進行可選綁定
override func awake(withContext context: Any?) {
super.awake(withContext: context)
}

Modal navigation
使用方法和iOS 中的模態(tài)一樣

Page-based navigation
這個方式目前我還沒搞懂