我正在尝试使用Bool更新名为AppState的@EnvironmentObject,该Bool指示正在发生某些过程并显示在活动指示器中。 在下面的代码中,我在viewModel中调用一个方法来登录用户。在调用login()之前,我更新了appState的“ isWaiting”属性,该属性传递到活动指示器类中,并且微调器显示在父视图上。当登录方法返回时,我将prop设置为false以杀死微调器。
enum
但是,它不起作用...我可以让微调器显示是否注释掉闭包内部的行以将其设置为false,但是当我取消注释时,什么也没显示(但是两行都在debug中命中了)模式) 我做错了任何明显的明显事情吗?
这是AppState类:
Button(action: {
self.loginViewModel.username = self.username
self.loginViewModel.password = self.password
self.appState.isWaiting = true
self.loginViewModel.login() { token in
if !token.isEmpty {
self.userToken = token
}
self.appState.isWaiting = false
}
}) {
Text("Log in")
.bold()
.frame(maxWidth: .infinity)
.padding()
.foregroundColor(.white)
}
}
在父视图中,我将其设置为@EnvironmentObject var
class AppState: ObservableObject {
@Published var isHidden: Bool = false
@Published var isWaiting: Bool = false
在LoginDrawerView中,它是ChooserView的子级,我引用了AppState
struct ChooserView: View {
@ObservedObject var homeState: AppState
}
.edgesIgnoringSafeArea([.bottom, .top])
.environmentObject(homeState)
在同一视图中,我调用了viewModel的login()方法,这是我上面粘贴的代码。如果不在这里重新创建整个应用程序,我不确定还能提供什么来重新创建它。任何帮助表示赞赏。