为SwiftUI Apple Watch App实现基于页面的导航

时间:2019-08-02 18:09:09

标签: navigation apple-watch swiftui

我正在SwiftUI中构建Apple Watch应用程序,并希望实现基于页面的导航,因此,当用户在主屏幕上向左滑动时,他们会转到另一个视图。

我了解如何使用NavigationLink使用户从一个屏幕移动到另一屏幕,但不了解如何通过向左或向右滑动来使用户在屏幕之间导航。

有人知道该怎么做吗?

3 个答案:

答案 0 :(得分:7)

此处是有关如何使用SwiftUI为watchOS实现基于页面的导航的指南。该说明基于Hacking with watchOS, SwiftUI edition

首先,创建一个新的SwiftUI视图,例如称为CounterView。

第二,创建WKHostingController的子类以显示新的SwiftUI视图。只需复制HostingController.swift中已经存在的控制器,并将其名称更改为CounterHostingController。然后,文件HostingController.swift包含以下两个控制器:

class HostingController: WKHostingController<ContentView> {
    override var body: ContentView {
        return ContentView()
    }
}

class CounterHostingController: WKHostingController<CounterView> {
    override var body: CounterView {
        return CounterView()
    }
}

第三,通过打开文件Interface.storyboard并单击Xco​​de窗口右上角的+按钮,创建一个故事板场景来存储新创建的主机控制器。在搜索框中输入“主机控制器”,拖出新的主机控制器并将其移到现有主机控制器旁边。在身份检查器中(单击Xco​​de窗口右侧顶部第二个菜单中的第四项,在该菜单中显示一个文档,该文档的左上角有图片,文本周围浮动),将Class更改为“ CounterHostingController”,然后选中“从目标继承模块”框。

第四,为了将这两个屏幕连接为同一用户界面的页面,请在情节提要中按Ctrl键,然后在原始主机控制器上用鼠标单击并按住键,同时将鼠标指针拖到新控制器上,释放鼠标键后,选择“下一页”进行关联选择。

答案 1 :(得分:0)

您可以使用多个WKHostingControllers使用Storyboard将它们绑定到页面中。 每个WKHostingController都会在您的导航流中代表该页面。

答案 2 :(得分:-1)