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
这个方式目前我还没搞懂
网友评论