最佳答案
我有一个 SwiftUI 视图,它接受一个名为 appModel
的 Environment 对象。然后,它在其 body
方法中读取值 appModel.submodel.count
。我希望这将我的视图绑定到 submodel
上的属性 count
,以便在属性更新时重新呈现,但这似乎并没有发生。
这是窃听器吗?如果没有,那么在 SwiftUI 中将视图绑定到环境对象的嵌套属性的惯用方法是什么?
具体来说,我的模型看起来像这样..。
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
我的视野是这样的。
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
当我运行应用程序并点击标签,count
属性确实增加,但标签没有更新。
我可以通过将 appModel.submodel
作为属性传递给 ContentView
来解决这个问题,但是如果可能的话,我希望避免这样做。