我有一个SwiftUI视图,其中包含一个名为appModel
的EnvironmentObject.然后在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
来解决这个问题,但如果可能的话,我希望避免这样做.