【发布时间】:2020-07-21 19:08:49
【问题描述】:
我从 SwiftUI 开始,关注 WWDC 视频,我从两个视图之间的 @State 和 @Binding 开始。我有一个正确的显示,但不知道如何使回溯读写 WWDC 视频中未包含的内容。
我有模型类:
class Manufacturer {
let name: String
var models: [Model] = []
init(name: String, models: [Model]) {
self.name = name
self.models = models
}
}
class Model: Identifiable {
var name: String = ""
init(name: String) {
self.name = name
}
}
然后我有一个绘图代码来按预期显示该工作:
var body: some View {
VStack {
ForEach(manufacturer.models) { model in
Text(model.name).padding()
}
}.padding()
}
我看到了这个: Canvas preview picture
但现在我想修改我的代码以允许编辑显示的模型并将其保存到我的模型@Binding 所以我将视图更改为:
var body: some View {
VStack {
ForEach(self.$manufacturer.models) { item in
Text(item.name)
}
}.padding()
}
但在ForEach 行中出现错误:
无法推断通用参数“ID”
什么ID参数?我在这里一无所知...我认为 Identifiable 在这里充当标识符。
我的问题是:
我有一个视图(ContentView)将我的数据源“保存”为@State 变量。然后我将其作为@Binding 传递给我的ManufacturerView 想要在List 中编辑此ForEach 填充但无法获得每个绑定工作 - 我该怎么做?
【问题讨论】:
-
这可能与问题没有直接关系,但您是否打算使用
manufacturer.models数组的每个元素的绑定,例如TextField("update name", item.name)? -
是的!这正是我想要在这里完成的!