watchOS系統(tǒng)開發(fā) - Navigation導航(4)

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)        
    }
Jietu20170802-102325-HD.gif

Modal navigation

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


Jietu20170802-102238-HD.gif

Page-based navigation

這個方式目前我還沒搞懂

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容