我发现watchOS 8.1RC中的NavigationLink从TabView触发的回归。它会立即被驳回。
它在watchOS 8.0或模拟器(watchOS 8.0)中工作。你知道变通的办法吗?由于
示例代码:
import SwiftUI
@main
struct TestNavigationApp: App {
var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
}
}
}
}
struct ContentView: View {
var body: some View {
List {
NavigationLink(destination: ContentView1()) {
Text("To TabView")
}
}
}
}
struct ContentView1: View {
var body: some View {
TabView {
NavigationView {
NavigationLink(destination: ContentView2()) {
Text("To ContentView2")
}
}
VStack {
Text("Screen2")
}
}
}
}
struct ContentView2: View {
var body: some View {
Text("ContentView2")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我在使用watchOS 8.1(和8.3测试版)时遇到了同样的问题。
通过将NavigationView移动到TabView中,我们能够让它再次工作。这个解决方法根本不是理想的,但它似乎确实有效。
@State private var tabSelection = 1
var body: some Scene {
WindowGroup {
TabView(selection: $tabSelection) {
NavigationView {
// List goes here
}
.tag(1)
VStack(alignment: .center, spacing: 12, content: {
// content 2nd tab: we didn't have a list in the 2nd tab
})
.tag(2)
}
}
}
但是,这个修复有两个影响:
我没有让navigationBarTitle工作,所以屏幕顶部不会有标题。如果你点击列表中的一个项目,它将导航到你的页面(如预期的那样),但屏幕底部的TabView点将保持不变。