Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SwiftUI基于用户输入的动态文本字段_Swift_Swiftui - Fatal编程技术网

使用SwiftUI基于用户输入的动态文本字段

使用SwiftUI基于用户输入的动态文本字段,swift,swiftui,Swift,Swiftui,我试图创建一组动态文本字段,这些字段是在用户按下add按钮后添加的。每按一次将添加另一组这些字段。我是新来的,所以请容忍我。我遇到一个致命错误:索引超出范围。下面是一个简单的例子,说明我正在努力实现的目标 struct ContentView: View { @State var name: [String] = [] @State var counter = 0 var body: some View { Form { Sec

我试图创建一组动态文本字段,这些字段是在用户按下add按钮后添加的。每按一次将添加另一组这些字段。我是新来的,所以请容忍我。我遇到一个致命错误:索引超出范围。下面是一个简单的例子,说明我正在努力实现的目标

struct ContentView: View {

    @State var name: [String] = []
    @State var counter = 0

    var body: some View {
        Form {
            Section {
                ForEach(0..<counter, id: \.self) { index in
                    TextField("Name", text: self.$name[index])
                }


                Button(action:{
                    self.counter += 1
                }) {
                    Text("Add more")
                }
            }
        }
    }
}
struct ContentView:View{
@状态变量名称:[字符串]=[]
@状态变量计数器=0
var body:一些观点{
形式{
部分{

ForEach(0..您正在增加计数器,但没有添加新项。如果您将新项添加到数组中,它将正常工作,不会出现错误:

Button(action:{
    self.name.append("")
    self.counter += 1
}) {
    Text("Add more")
}
但是最好不要使用
计数器
变量。如果向
名称
数组中添加新项,其计数将自动增加。您可以在
ForEach
循环中使用它,如下所示:

ForEach(0..<names.count, id: \.self) { index in
    TextField("Name", text: self.$names[index])
}

注意:对于数组,最好使用复数名称:
names
而不是
name
。这表示它是一个项目集合。

Hi Pawello。这是一个扭曲,因为文本必须是带有名称索引的names数组。谢谢
Button(action:{
    self.names.append("")
}) {
    Text("Add more")
}