美文网首页watchOS
watchOS系统开发 - Navigation导航(4)

watchOS系统开发 - Navigation导航(4)

作者: 冰三尺 | 来源:发表于2017-08-02 16:18 被阅读28次

    WatchOS中的导航非常有限, 不像在iOS中, 你甚至可以自定义导航系统, 在使用导航之前, 先熟悉下在WatchOS中的几种导航方式.
    有三种导航方式
    • Hierarchical:类似于UINavigationController.
    • Page-based:类似于UIPageViewController.
    • Modal: 类似于模态

    Hierarchical navigation

    分层导航将是iOS开发人员最熟悉的概念之一。在UIKit中,UINavigationController管理push和pop子控制器及其动画。
    WatchKit有一个非常相似的系统:
    •您可以将WKInterfaceController的实例push导航堆栈。
    •内置滑动手势和后退按钮。
    •您可以使用故事板设置导航,也可以在代码中执行。
    WatchKit不是拥有主导航控制器,而是为您处理所有导航。您可以简单地从按钮控制拖动到控制器,或者直接在代码中调用self.pushController(withName: <#T##String#>, context: <#T##Any?#>)
    使用分层导航系统时,WatchKit为您提供可选的上下文参数,您可以在导航时在控制器之间传递。
    控制器之间的通信一直是困难的。在WatchKit中使用上下文传递将使您的应用程序的架构保持干净。

    代码设置导航, 传参

    open func pushController(withName name: String, context: Any?)
    

    name参数为要显示的接口控制器的名称。 在您的故事板中,接口控制器的名称存储在对象的Identifier属性中,该属性位于属性检查器中。
    context参数为要传递的参数

    storyboard设置
    push操作和iOS一样, 直接拉线就可以了. 关于传参则使用

        override func contextForSegue(withIdentifier segueIdentifier: String) -> Any? {
            return ["key":"value"]
        }
    

    只需要在这个方法中返回你要传递的参数就可以了

    接受参数

    context保存的就是参数, 是一个可选值, 使用时一定要进行可选绑定

        override func awake(withContext context: Any?) {
            super.awake(withContext: context)        
        }
    
    Jietu20170802-102325-HD.gif

    Modal navigation

    使用方法和iOS 中的模态一样


    Jietu20170802-102238-HD.gif

    Page-based navigation

    这个方式目前我还没搞懂

    相关文章

      网友评论

        本文标题:watchOS系统开发 - Navigation导航(4)

        本文链接:https://www.haomeiwen.com/subject/vcdelxtx.html