0

我刚刚与 Apple 分享了这个错误。我想和你分享。

申请关注

1 - 用户登录到 onBoardingView 页面后,他们被定向到具有 fullScreenCover 的 ContentView。

2 - ContentView 页面包含 TabView 中与 ForEach 重复的对象。单击这些对象将带您进入 DetailView 页面。

3 - 但是,导航在单击对象后会重复多次。

我的英语不好。非常遗憾。

视频在这里

项目文件在这里

struct OnboardView: View {
    @State var isLogin: Bool = false
    var body: some View {
        
        Button(action: {self.isLogin = true}) {
            Text("Login")
        }
        .fullScreenCover(isPresented: self.$isLogin) {
            ContentView()
        }
    }
}


struct ContentView: View {
    @State var selected: String = ""
    var items: [String] = ["1","2","3","4","5","6","7","8","9","10"]
    var body: some View {
        NavigationView {
            TabView(selection: $selected) {
                ForEach(items, id: \.self) { item in
                    NavigationLink(
                        destination: DetailView(),
                        label: {
                            Text(item)
                                .foregroundColor(.white)
                                .padding()
                                .background(Color.orange)
                                .cornerRadius(10)
                        })
                }
            }
            .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
            .indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
        }
    }
}
4

1 回答 1

0

ForEachSwiftUI 中使用时,您必须格外小心 id。

尝试将项目更改为items.indices

                ForEach(items.indices, id: \.self) { item in
                    NavigationLink(
                        destination: Text("Detail View"),
                        label: {
                            Text(items[item])
                                .foregroundColor(.white)
                                .padding()
                                .background(Color.orange)
                                .cornerRadius(10)
                        }
                    )
                }
于 2021-03-26T04:03:42.137 回答