我是SwiftUI的新手。学习新属性,例如@ State,@ Binding,@ EnvironmentObject等。
我当前正在使用登录模板,在可观察对象中定义一个绑定@Published变量,该变量允许在登录页面和主页之间进行切换。但是,当我更新可观察对象内部的变量时,主页不会显示。它仍然在登录页面中。我的代码中缺少什么?
struct ContentView: View {
@EnvironmentObject var loginViewModel: LoginViewModel
var body: some View {
return Group {
if loginViewModel.signInSuccess {
MainPageView()
}
else {
LoginView(signInSuccess: $loginViewModel.signInSuccess).environmentObject(LoginViewModel())
}
}
}
}
final class LoginViewModel: ObservableObject {
@Published var signInSuccess:Bool = false;
func performLogin() {
signInSuccess = true;
}
}
struct LoginView: View {
@EnvironmentObject var loginViewModel: LoginViewModel
@Binding var signInSuccess: Bool;
var body: some View {
Button(action: submit) {
Text("Login")
.foregroundColor(Color.white)
}
}
func submit() {
loginViewModel.performLogin()
// signInSuccess = true;
}
}
如果我尝试在loginView中更新绑定'signInSuccess',它可以成功将视图更新为mainView。但是,有什么方法可以更新Observable Object中的signInSuccess,同时也可以将ContentView更新为MainView吗?