在 WatchOS 上的 SwiftUI 应用程序中是否可以进行基于页面的导航?
Is page-based navigation possible in a SwiftUI app on WatchOS?
我看到基于页面的导航是 supported 用于 WatchOS,但是有没有办法使用 SwiftUI 访问此功能?
是的,这是可能的。首先,像这样为每个页面定义托管控制器
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()
}
}
其中 Page1View
和 Page2View
是您的 SwiftUI 实现。
然后,将新的视图控制器添加到您的 Interface.storyboard
,将它们的实现 类 设置到您的新控制器 类 并通过 "next page" segue 连接它们。
有 NavigationLink 按钮,按下时会触发导航演示。
var body: some View {
VStack() {
NavigationLink(destination: Text("Destination view"), label: {
Text("Title of the NavigationLink button")
})
}
}
如果您正在使用新的 SwiftUI App Lifecycle 并且无法访问 Storyboards(或者只需要一个不使用 Storyboards 的 App Delegate Cycle 的解决方案),您可以使用 SwiftUI 2 中新的页面视图样式:
WindowGroup {
TabView {
Page1View()
Page2View()
}
.tabViewStyle(PageTabViewStyle())
}
我看到基于页面的导航是 supported 用于 WatchOS,但是有没有办法使用 SwiftUI 访问此功能?
是的,这是可能的。首先,像这样为每个页面定义托管控制器
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()
}
}
其中 Page1View
和 Page2View
是您的 SwiftUI 实现。
然后,将新的视图控制器添加到您的 Interface.storyboard
,将它们的实现 类 设置到您的新控制器 类 并通过 "next page" segue 连接它们。
有 NavigationLink 按钮,按下时会触发导航演示。
var body: some View {
VStack() {
NavigationLink(destination: Text("Destination view"), label: {
Text("Title of the NavigationLink button")
})
}
}
如果您正在使用新的 SwiftUI App Lifecycle 并且无法访问 Storyboards(或者只需要一个不使用 Storyboards 的 App Delegate Cycle 的解决方案),您可以使用 SwiftUI 2 中新的页面视图样式:
WindowGroup {
TabView {
Page1View()
Page2View()
}
.tabViewStyle(PageTabViewStyle())
}