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