如何在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())

非常感谢你!