我正在 macOS 上的表格中显示一些项目(SwiftUI 3.0 中的新增功能)。在每列中显示
Text
视图时,我可以让表格正常工作,但我真的想在其中一列中显示 Picker
视图。但我不确定如何将选择器的选择“绑定”到用于驱动项目列表的数组中的项目。
这是我正在尝试的代码:
struct TestSwiftUIView: View {
@State var mappingFields: [ImportMappingField]
var body: some View {
VStack {
Table(mappingFields) {
TableColumn("Imported Field") { item in
Text("\(item.columnName)")
}.width(160)
TableColumn("Mapped Field") { item in
Text("\(item.fieldName.typeNameAndDescription.description)")
}.width(150)
TableColumn("Type") { item in
Picker("", selection: $item.selectedCustomFieldType){ // error here
ForEach(ImportMappingType.allCases, id:\.self ) { i in
Text(i)
}
}
}.width(100)
}
}
}
}
在
selection: $item.selectedCustomFieldType
中,我收到一条错误消息
“在范围内找不到‘$item’”
所以我想将每个选择器绑定到每个“项目”中的一个元素,但它不允许我这样做。
这个问题有好的解决办法吗?
尝试使用这种方法来为您提供所需的
item
绑定:
Table($mappingFields) { // <-- here
TableColumn("Type") { $item in // <-- here
Picker("", selection: $item.selectedCustomFieldType){
...
}
其他
TableColumn
也类似。您可能必须使 ImportMappingField
符合 Identifiable