我想动态更改Picker的内容。
但是我认为您不能将Binding属性传递给ForEach。
@Binding var options: [String]
@Binding var selectedIndex: Int
var body: some View {
Picker(selection: self.$selectedIndex, label: Text("")) {
ForEach(0..<self.$options.count) { // error: Cannot assign to property: 'count' is a get-only property
Text(self.options[$0])
}
}
}
答案 0 :(得分:1)
这里是可能解决方案的演示。经过Xcode 11.4 / iOS 13.4的测试
struct TestPickerView: View {
@Binding var options: [String]
@Binding var selectedIndex: Int
var body: some View {
Picker(selection: self.$selectedIndex, label: Text("")) {
ForEach(Array(self.options.enumerated()), id: \.element) { index, item in
Text(item).tag(index)
}
}.id(options) // << important !!
}
}
注意:a。选择器必须显式依赖于选择要被更新时改变的选项数/重建,这是{1} {}是需要