SwiftUI ForEach循环索引始终为0

时间:2020-09-29 22:54:27

标签: swift swiftui

我有一个ForEach循环:

       ScrollView(.horizontal) {
            HStack {
                ForEach(0..<instance.values.count, id: \.self) { index in
                    ValueView(value: $instance.values[index] )
                        //bookmark set here
                        .disabled(  distributed && (index != 0 && index != instance.values.count - 1 ))
                        .frame(width: 35)
                        .controlSize(.mini)
                        .padding(.horizontal, -4.0)
                }
            }
        }

如果var distributed true ,我想禁用除第一行和最后一行之外的所有行。 无法正常工作,所有ValueView均已启用或禁用。 现在最令人惊讶的事情是: 我将断点设置为在控制台______________index in @index@中打印,结果是:

 ______________index in 0
 ______________index in 0
 ______________index in 0
 ______________index in 0
 ______________index in 0
 ______________index in 0
 ______________index in 0    

什么是index?为什么总是0?真的很奇怪,ValueView中的值还可以。

1 个答案:

答案 0 :(得分:0)

索引未更新。对于ForEach,$ 0是索引。旋转一下:

  ScrollView(.horizontal) {
                HStack {
                    ForEach(0..<instance.values.count, id: \.self) { 
                        ValueView(value: $instance.values[$0] )
                            //bookmark set here
                            .disabled(  distributed && ($0 != 0 && $0 != instance.values.count - 1 ))
                            .frame(width: 35)
                            .controlSize(.mini)
                            .padding(.horizontal, -4.0)
                    }
                }
            }