【发布时间】:2020-06-01 13:18:50
【问题描述】:
我想要一个包含行的列表,每行里面有 2 个文本字段。这些行应该保存在一个数组中,以便我可以将其他视图中的数据用于进一步的功能。如果 Textfield 中的文本发生更改,则应将文本保存在数组的正确条目中。 您还可以通过一个按钮将新行添加到列表中,这也应该更改行的数组。
目标是拥有一个键值对列表,每个键值对都可编辑,并且这些条目与当前文本一起保存。
有人可以帮助我和/或给我提示以解决此问题吗?
到目前为止,我已经尝试过这样的事情:
// the array of list entries
@State var list: [KeyValue] = [KeyValue()]
// the List inside of a VStack
List(list) { entry in
KeyValueRow(list.$key, list.$value)
}
// the single item
struct KeyValue: Identifiable {
var id = UUID()
@State var key = ""
@State var value = ""
}
// one row in the list with view elements
struct KeyValueRow: View {
var keyBinding: Binding<String>
var valueBinding: Binding<String>
init(_ keyBinding: Binding<String>, _ valueBinding: Binding<String>){
self.keyBinding = keyBinding
self.valueBinding = valueBinding
}
var body: some View {
HStack() {
TextField("key", text: keyBinding)
Spacer()
TextField("value", text: valueBinding)
Spacer()
}
}
}
另外,关于添加新条目的按钮。 问题是,如果我执行以下操作,视图中的列表将变为空白,并且所有内容再次为空 (可能相关:SwiftUI TextField inside ListView goes blank after filtering list items?)
Button("Add", action: {
self.list.append(KeyValue())
})
【问题讨论】: