单击对象后导航会重复多次
Navigation repeats itself several times after clicking the object
我刚刚与 Apple 分享了这个错误。我想和你分享。
申请关注
1 - 用户登录到 onBoardingView 页面后,他们将被定向到具有 fullScreenCover 的 ContentView。
2 - ContentView 页面包含 TabView 中与 ForEach 重复的对象。单击这些对象将带您进入 DetailView 页面。
3 - 但是,单击对象后,导航会自行重复多次。
我的英语不好。对此感到抱歉。
视频是here
项目文件是here
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))
}
}
}
在 SwiftUI 中使用 ForEach
时,您必须格外小心 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)
}
)
}
我刚刚与 Apple 分享了这个错误。我想和你分享。
申请关注
1 - 用户登录到 onBoardingView 页面后,他们将被定向到具有 fullScreenCover 的 ContentView。
2 - ContentView 页面包含 TabView 中与 ForEach 重复的对象。单击这些对象将带您进入 DetailView 页面。
3 - 但是,单击对象后,导航会自行重复多次。
我的英语不好。对此感到抱歉。
视频是here
项目文件是here
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))
}
}
}
在 SwiftUI 中使用 ForEach
时,您必须格外小心 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)
}
)
}