SwiftUI: NavigationView在WatchOS 8.1当列表和ForEach被嵌入TabView的错误.



下面的代码在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点将保留。

相关内容

  • 没有找到相关文章

最新更新