在WatchOS上的SwiftUI应用中是否可以进行基于页面的导航?

时间:2020-01-12 19:00:37

标签: swift swiftui watchos

我看到对于WatchOS,基于页面的导航是supported,但是有没有办法通过SwiftUI访问此功能?

page-based-navigation

3 个答案:

答案 0 :(得分:5)

是的,这是可能的。首先,像这样为每个页面定义托管控制器

class Page1HostingController: WKHostingController<Page1View> {
    override var body: Page1View {
        self.setTitle("page1")
        return Page1View()
    }
}

class Page2HostingController: WKHostingController<Page2View> {
    override var body: Page2View {
        self.setTitle("page2")
        return Page2View()
    }
}

其中Page1ViewPage2View是您的SwiftUI实现。

然后,将新的视图控制器添加到Interface.storyboard,将其实现类设置为新的控制器类,并通过“下一页” segue将它们连接起来。

答案 1 :(得分:3)

如果您正在使用新的 SwiftUI App Lifecycle 并且无法访问 Storyboards(或者只需要 App Delegate Cycle 的解决方案而不使用 Storyboards),您可以在 SwiftUI 2 中使用新的页面视图样式:

WindowGroup {
   TabView {
     Page1View()
     Page2View()
   }
   .tabViewStyle(PageTabViewStyle())
}

答案 2 :(得分:0)

有一个NavigationLink按钮,当按下该按钮时会触发导航演示。

var body: some View {
    VStack() {
        NavigationLink(destination: Text("Destination view"), label: {
        Text("Title of the NavigationLink button")
      })
    }
  }