【发布时间】:2021-11-26 05:18:00
【问题描述】:
我有一个这样定义的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 从父视图绑定到子视图?
【问题讨论】:
标签: swift swiftui observableobject swiftui-foreach