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