Saya memiliki tampilan SwiftUI yang menggunakan EnvironmentObject yang dipanggil appModel
. Kemudian membaca nilai appModel.submodel.count
dalam body
metodenya. Saya berharap ini untuk mengikat pandangan saya ke properti count
di submodel
sehingga membuat kembali ketika properti diperbarui, tetapi ini tampaknya tidak terjadi.
Apakah ini bug? Dan jika tidak, apa cara idiomatis untuk memiliki pandangan mengikat properti bersarang objek lingkungan di SwiftUI?
Secara khusus, model saya terlihat seperti ini ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Dan pandangan saya terlihat seperti ini ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Ketika saya menjalankan aplikasi dan mengklik label, count
properti bertambah tetapi label tidak memperbarui.
Saya dapat memperbaikinya dengan melewatinya appModel.submodel
sebagai properti ContentView
, tetapi saya ingin menghindari melakukannya jika memungkinkan.