Mam widok SwiftUI, który pobiera obiekt EnvironmentObject o nazwie appModel
. Następnie odczytuje wartość appModel.submodel.count
w body
metodzie. Spodziewam się to wiązać mój pogląd na własność count
na submodel
tak, że ponownie renderuje kiedy aktualizacje własności, ale to nie wydaje się zdarzyć.
Czy to błąd? A jeśli nie, jaki jest idiomatyczny sposób powiązania widoków z zagnieżdżonymi właściwościami obiektów środowiska w SwiftUI?
W szczególności mój model wygląda tak ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
A mój widok wygląda tak ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Gdy uruchamiam aplikację i klikam etykietę, count
właściwość rośnie, ale etykieta się nie aktualizuje.
Mogę to naprawić, przekazując appModel.submodel
jako właściwość ContentView
, ale chciałbym tego uniknąć, jeśli to możliwe.