二次选择器';s';ForEach&x27;给我致命错误:索引超出范围

二次选择器';s';ForEach&x27;给我致命错误:索引超出范围,foreach,swiftui,picker,Foreach,Swiftui,Picker,每次启动辅助选择器时都会出现此错误 第一个选择器工作正常。 但是,当我切换选择器和滚动时,会得到以下结果: 以下是我的全部代码(作为对这个问题的测试而编写): ForEach{}的正确语法是什么来避免此问题?这是因为两个选择器使用相同的selectedItem 如果在第二个选择器中选择最后一个项目(索引4),然后切换到第一个选择器(最大索引=3),则在此行中: Text("You selected: \(colors[selectedItem])") 您将尝试

每次启动辅助选择器时都会出现此错误
第一个选择器工作正常。
但是,当我切换选择器和滚动时,会得到以下结果:

以下是我的全部代码(作为对这个问题的测试而编写):


ForEach{}的正确语法是什么来避免此问题?这是因为两个选择器使用相同的
selectedItem

如果在第二个选择器中选择最后一个项目(索引4),然后切换到第一个选择器(最大索引=3),则在此行中:

Text("You selected: \(colors[selectedItem])")
您将尝试访问超出范围的索引


要解决此问题,可以为每个选择器使用单独的
@State
变量:

struct ContentView: View {
    @State private var selectedColorIndex = 0
    @State private var selectedSizeIndex = 0
struct ContentView: View {
    @State private var selectedColorIndex = 0
    @State private var selectedSizeIndex = 0
Picker(selection: $selectedColorIndex, label: Text("Please choose a color")) {
Picker(selection: $selectedSizeIndex, label: Text("Please choose a size")) {