Ios 成功登录时导航未激活

Ios 成功登录时导航未激活,ios,swift,swiftui,Ios,Swift,Swiftui,我正在使用Firebase对用户进行身份验证,并希望在成功登录时显示主屏幕。但是,当按下“登录”按钮时,我的导航链接到LandingPageView不会触发。我希望新视图以模式显示,而不是在导航堆栈中,这样您就可以在通过导航按钮登录时无法导航回主屏幕,而必须主动注销。这是我的密码 import SwiftUI import FirebaseAuth struct ContentView: View { @State var email: String = "" @State

我正在使用Firebase对用户进行身份验证,并希望在成功登录时显示主屏幕。但是,当按下“登录”按钮时,我的导航链接到LandingPageView不会触发。我希望新视图以模式显示,而不是在导航堆栈中,这样您就可以在通过导航按钮登录时无法导航回主屏幕,而必须主动注销。这是我的密码

import SwiftUI
import FirebaseAuth

struct ContentView: View {

    @State var email: String = ""
    @State var passsword: String = ""
    @State var goToHome: Bool = false

    var body: some View {
        NavigationView {
        ZStack{
            Color(.systemGreen).edgesIgnoringSafeArea(.all)
            VStack {
                Text("Chat App").font(Font.custom("Pacifico-regular", size: 40))
                Spacer()
                VStack {
                    Text("Email: ").font(.body)
                    TextField("Enter your email", text: $email).textFieldStyle(RoundedBorderTextFieldStyle())
                        .padding(.horizontal)
                }
                VStack {
                    Text("Password: ")
                    TextField("Enter your password", text: $passsword)
                        .textFieldStyle(RoundedBorderTextFieldStyle())
                        .padding(.horizontal)
                }
                Button(action: {
                    Auth.auth().signIn(withEmail: self.email, password: self.passsword) { (result, error) in
                            if error != nil {
                                print("ERROR \(error!)")
                            } else {
                                print("SIGNED IN USER")
                                self.goToHome = true
                                NavigationLink(destination:
                                LandingPageView(), isActive: self.$goToHome) {
                                    Text("")
                                }.hidden()
                            }
                        }
                }) {
                    Text("Login")
                }
                NavigationLink(destination: SignUpView()) {
                    Text("Sign Up")
                }


            }
        }
    }
    }
    }

    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
        ContentView()
    }
}
这样做:

var body: some View {
ZStack {
    if Auth.auth().currentUser = nil
       // Your LogIn-View
       } else {
       LandingPageView()
   }
}

这里有可能的解决办法

Button(action: {
    Auth.auth().signIn(withEmail: self.email, password: self.passsword) { (result, error) in
            if error != nil {
                print("ERROR \(error!)")
            } else {
                print("SIGNED IN USER")
                DispatchQueue.main.async {  // << activate on UI queue !!
                   self.goToHome = true
                }
            }
        }
}) {
    Text("Login")
}
.background( // << hide link in background
    NavigationLink(destination: LandingPageView(), 
        isActive: self.$goToHome) { EmptyView() }
)
按钮(操作:{
Auth.Auth()
如果错误!=nil{
打印(“错误\(错误!)”)
}否则{
打印(“登录用户”)
DispatchQueue.main.async{//