SwiftUI Picker onChange Response 不可预测

SwiftUI Picker onChange Response is unpredictable

我做了一个这样的选择器;

但是有一个问题onChange在第一次选择时没有触发。

indexList[0] 的值为 0。当在 Picker onChange 中选择的不是 0 时,不会触发 但在接下来的选择中,它会按预期工作。

此外,当第一次使用选择器列表时,第一个项目会按预期勾选。 But when 2nd item is selected it does not fire onChange.

我找不到原因。

Menu {
      Picker("", selection: $indexList[0]) {
         ForEach(0..<myArray.count, id: \.self) {  index in
              Text(myArray[index])
                    }
                }
             
                .onChange(of: indexList[0],
                          perform: {_ in
                              dump(indexList[0])
                })
             
            } label: {
               customLabel0
            }



var customLabel0: some View{
    HStack {
      VStack(spacing: 10) {
        Text(labels[0])
          .foregroundColor(.black)
             Text(myArray[indexList[0]])
                   .multilineTextAlignment(.center)
             }

           .foregroundColor(.white)
       }
       .frame(width: (width, height: height)
       .background(Color.gray)
       .cornerRadius(5)
   }
            

现在,它工作得很好, 使用 onChange 的菜单放置时必须更改。 遗憾的是没有文档,我必须尝试很多东西。

Menu {
  Picker("", selection: $indexList[0]) {
     ForEach(0..<myArray.count, id: \.self) {  index in
          Text(myArray[index])
                }
            }
         
            
         
        } label: {
           customLabel0

        } 
        .onChange(of: indexList[0],
                      perform: {_ in
                          dump(indexList[0])
            })



var customLabel0: some View{
 HStack {
  VStack(spacing: 10) {
    Text(labels[0])
      .foregroundColor(.black)
         Text(myArray[indexList[0]])
               .multilineTextAlignment(.center)
         }

       .foregroundColor(.white)
   }
   .frame(width: (width, height: height)
   .background(Color.gray)
   .cornerRadius(5)
}