在SwiftUI中,我希望将环境对象传递给视图模型,以便可以更改/更新它.EnvironmentObject是一个简单的AppState,由单个属性计数器组成.
class AppState: ObservableObject {
@Published var counter: Int = 0
}
视图模型"CounterViewModel"更新环境对象,如下所示:
class CounterViewModel: ObservableObject {
var appState: AppState
init(appState: AppState) {
self.appState = appState
}
var counter: Int {
appState.counter
}
func increment() {
appState.counter += 1
}
}
ContentView显示值:
struct ContentView: View {
@ObservedObject var counterVM: CounterViewModel
init(counterVM: CounterViewModel) {
self.counterVM = counterVM
}
var body: some View {
VStack {
Text("\(counterVM.counter)")
Button("Increment") {
counterVM.increment()
}
}
}
}
我也正在注入状态,如下所示:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
NavigationStack {
let appState = AppState()
ContentView(counterVM: CounterViewModel(appState: appState))
.environmentObject(appState)
}
}
}
问题是,当我单击增量按钮时,计数器VM.计数器从不返回更新后的值.我错过了什么?