如何在SwiftUI中单击按钮时动态添加表单组?
我想做一个表单,需要在点击按钮时动态添加更多字段。 每次单击,我都会添加两个字段(一个组)。 到目前为止,我已经尝试过: 我创建了一个字典数组,用于保存这两个字段(组)的值 看起来像这样如何在SwiftUI中单击按钮时动态添加表单组?,swift,swiftui,swiftui-list,Swift,Swiftui,Swiftui List,我想做一个表单,需要在点击按钮时动态添加更多字段。 每次单击,我都会添加两个字段(一个组)。 到目前为止,我已经尝试过: 我创建了一个字典数组,用于保存这两个字段(组)的值 看起来像这样 @State var record=[[“before”:300,“after”:280”,“before:300”,“after”:260]] 然后我有一个按钮,单击(递增计数器)我会在上面的数组中添加一个字典,这样它就会添加一个新的表单组(2个字段) 这是我的视图,我使用forEach循环和渲染项目 For
@State var record=[[“before”:300,“after”:280”,“before:300”,“after”:260]]
然后我有一个按钮,单击(递增计数器)我会在上面的数组中添加一个字典,这样它就会添加一个新的表单组(2个字段)
这是我的视图,我使用forEach循环和渲染项目
ForEach(0..<counter, id: \.self) { index in
TextField("Before value", text: $record[index]["before"])
TextField("After value", text: $record[index]["after"])
}
ForEach(0..TextField
必须需要字符串
绑定,并且在代码中,您使用的是Int
。因此,首先需要将词典声明为[String:String]
类型,然后使用自定义绑定。如下所示
@State var record = [["before": "300", "after": "280"],["before": "300", "after": "260"]]
TextField("Before value", text: Binding(get: {(record[0]["before"] ?? "")}, set: {record[0]["before"] = $0}))
TextField("After value", text: Binding(get: {(record[0]["after"] ?? "")}, set: {record[0]["after"] = $0}))
如果你仍然想使用Int,那么你可以通过这个来使用它
@State var record = [["before": 300, "after": 280],["before": 300, "after": 260]]
TextField("Before value", value: Binding(get: {(record[0]["before"])}, set: {record[0]["before"] = $0}), formatter: NumberFormatter())
非常感谢你!