下面的代码在WatchOS 7和8.0中工作得很好,但现在在8.1中点击行将导航到目的地,但随后立即导航回根视图。
我提交了反馈#FB9727188,并包括以下内容来演示问题。
struct ContentView: View {
@State var tabIndex:Int = 0
var body: some View {
TabView(selection: $tabIndex) {
ListView()
.tabItem { Group{
Text("List")
}}.tag(0)
.padding(.bottom, 1.0)
Text("Second View")
.tabItem { Group{
Text("Second")
}}.tag(1)
.padding(.bottom, 1.0)
Text("Third View")
.tabItem { Group{
Text("ThirdView")
}}.tag(2)
}
}
}
struct ListView: View {
var body: some View {
List {
ForEach((1...10).reversed(), id: .self) {_ in
NavigationLink(destination: Text("test")) {
Text("Tap Me but we'll just be back here")
}
}
}
}
}
我在使用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 {
// content 2nd tab: we didn't have a list in the 2nd tab
}
.tag(2)
}
}
}
但是,这个修复有两个影响:
- 我没有得到
navigationBarTitle
工作,所以不会有一个标题在屏幕的顶部。 - 如果你点击列表中的一个项目,它将导航到你的页面(如预期的那样),但屏幕底部的TabView点将保留。