Tengo una vista SwiftUI que toma un objeto de entorno llamado appModel
. Luego lee el valor appModel.submodel.count
en su body
método. Espero que esto se una a mi punto de vista de la propiedad count
de submodel
manera que cuando se vuelve a renderizar, pero esto no parecen los cambios de propiedad a suceder.
¿Es esto un error? Y si no, ¿cuál es la forma idiomática de hacer que las vistas se unan a las propiedades anidadas de los objetos del entorno en SwiftUI?
Específicamente, mi modelo se ve así ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Y mi punto de vista se ve así ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Cuando ejecuto la aplicación y hago clic en la etiqueta, la count
propiedad aumenta pero la etiqueta no se actualiza.
Puedo arreglar esto pasando appModel.submodel
como una propiedad a ContentView
, pero me gustaría evitar hacerlo si es posible.