我有一个Subtask
这样的定义:
struct Subtask: Identifiable{
var id = UUID().uuidString
var text = ""
}
我以这样的方式填充它们的数组ObservableObject
:
//View Model
class SubtaskModel: ObservableObject {
static let shared = SubtaskModel()
@Published var subtasks = [Subtask]()
init(){
//Code that creates the subtasks array
}
}
然后我从我的父视图开始渲染它们,如下所示:
//Parent View
struct ParentView: View {
@StateObject var model = SubtaskModel.shared
...
ForEach($model.subtasks) { subtask in
ChildView(subtask: $subtask)
}
}
为了能够修改Subtask
子视图中的每个人:
//Child View
struct ChildView: View{
@Binding var subtask: Subtask
...
TextField("Text...", text: $subtask.text, onCommit:{
print("Save subtask!")
})
}
我ParentView
在这一行遇到错误:
ChildView(subtask: $subtask)
...说的是:
在范围内找不到“$subtask”
所以似乎没有为我的视图模型返回的ForEach
每个返回绑定。subtasks
我尝试了其他变体,ForEach
但仍然出现错误:
ForEach(model.subtasks) { subtask in
ForEach($model.subtasks, id: \.self) { subtask in
ForEach($model.subtasks, id: \.id) { subtask in
如何将Subtask
子视图从父视图绑定到子视图?