我正在尝试使用
我正在尝试使用的视图模型是:
我发现许多问题都涉及到同样的问题,但我无法使其中任何一个适用于我的情况。其中一些没有提到
ForEach
显示动态文本字段列表。以下代码按预期工作:我可以添加/删除文本字段,并且绑定是正确的。但是,当我将items
移动到ObservableObject
视图模型中时,它不再起作用,并且会崩溃并显示index out of bounds
错误。为什么会这样?如何使其正常工作?struct ContentView: View {
@State var items = ["A", "B", "C"]
var body: some View {
VStack {
ForEach(items.indices, id: \.self) { index in
FieldView(value: Binding<String>(get: {
items[index]
}, set: { newValue in
items[index] = newValue
})) {
items.remove(at: index)
}
}
Button("Add") {
items.append("")
}
}
}
}
struct FieldView: View {
@Binding var value: String
let onDelete: () -> Void
var body: some View {
HStack {
TextField("item", text: $value)
Button(action: {
onDelete()
}, label: {
Image(systemName: "multiply")
})
}
}
}
我正在尝试使用的视图模型是:
class ViewModel: Observable {
@Published var items: [String]
}
@ObservedObject var viewModel: ViewModel
我发现许多问题都涉及到同样的问题,但我无法使其中任何一个适用于我的情况。其中一些没有提到
TextField
,其他一些可能已经失效了。
非常感谢
List
和onDelete
时已经可以正常工作了。 - undefined