我可以在 ForEach 循环内的 TextField 绑定中添加变量吗?

问题描述

总的来说,我对 swiftUI 和开发非常陌生。我正在尝试创建一个返回字符串的动态文本字段列表。

    ForEach((1...numberofNAdefects),id: \.self) {
                        
                        TextField("\($0): Enter defect description",text: $nadefect1)

我遇到的问题是我希望“$nadefect#”返回字符串随着 foreachloop 动态增加。最初我的想法是添加 text: $nadefect\($0) 但这不起作用。

解决方法

像您建议的那样增加字符串是不可能的。不过,在 SwiftUI 中实现动态文本字段列表非常容易。

您可以使用字符串数组代替增加字符串:

struct ContentView: View {
    
    @State var defects: [String] = ["","",""]
    
    var body: some View {
        ForEach(0..<defects.count,id: \.self) {
            TextField("\($0 + 1): Enter defect description",text: $defects[$0])
        }.padding()
    }
}