Ho una vista SwiftUI che accetta un EnvironmentObject chiamato appModel
. Quindi legge il valore appModel.submodel.count
nel suo body
metodo. Mi aspetto che questo associ la mia vista alla proprietà count
in submodel
modo che ritorni quando la proprietà si aggiorna, ma questo non sembra accadere.
è un insetto? E in caso contrario, qual è il modo idiomatico di avere viste associate a proprietà nidificate di oggetti di ambiente in SwiftUI?
In particolare, il mio modello è simile a questo ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
E la mia vista è simile a questa ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Quando eseguo l'app e faccio clic sull'etichetta, la count
proprietà aumenta ma l'etichetta non si aggiorna.
Posso risolvere questo problema passando appModel.submodel
come proprietà ContentView
, ma vorrei evitare di farlo se possibile.