FireBase 登录过程后导航到主屏幕(内容视图)。 (SwiftUI)

Posted

技术标签:

【中文标题】FireBase 登录过程后导航到主屏幕(内容视图)。 (SwiftUI)【英文标题】:Navigate to Home Screen (Content View) after FireBase log in process. (SwiftUI) 【发布时间】:2021-01-09 18:15:55 【问题描述】:

我尝试在 FireBase 登录后导航到主屏幕,但此代码在登录视图中显示主屏幕视图。登录成功时,我输入了 isReadyToNavigateToHomePage.toggle() 。如果它是真的,我会使用它导航到主屏幕。

 Button(action: 
        let error = validateFields()
        if error != nil
            errM = error!
            showErrorAleart.toggle()
     

         showError(error!)
            print(error!)
        
        else
            Auth.auth().signIn(withEmail: email, password: password) (result, error) in
                if error != nil 
                    errr = error!.localizedDescription
                   print(error!.localizedDescription)
                    
                
                
                else
                    self.presentationMode.wrappedValue.dismiss()
                    print("successful log in")
                    isReadyToNavigateToHomePage.toggle()
                    
                
               
              
         
                
            
       
    )
      
        HStack
            Spacer()
        Text("Sign In")
            .padding(.horizontal).padding(.vertical,5).padding(.trailing,20)
            .background(Color.green)
            .foregroundColor(.white)
            .cornerRadius(10)
            .padding(.top, 30)
            .overlay(Image("signInBtn").resizable().frame(width: 12, height: 12).padding(5).background(Color.white).cornerRadius(5).offset(x: 35, y: 15))
         Spacer()
        
        if isReadyToNavigateToHomePage == true 
            ContentView()
              
        
    
        .alert(isPresented: $showErrorAleart)
        Alert(title: Text("Warning"), message: Text(errM + errr), dismissButton: .default(Text("Ok")))
    
  

【问题讨论】:

将所有登录视图相关部分放在else条件中 很抱歉,您能解释一下吗? 是的,当用户已经使用 userDefualts 登录时,我使用您的解决方案显示主屏幕或登录屏幕 【参考方案1】:

我创建了一个假的 navigationLink 直到它切换,

 NavigationLink(destination: ContentView(showHomeScreen: $showHomeScreen),     isActive: $showHomeScreen)
                Text("")
        .hidden()

   else
           
            Auth.auth().signIn(withEmail: email, password: password) (result, error) in
                if error != nil 
                    errr = error!.localizedDescription
                   print(error!.localizedDescription)
                    
                
                else
                    showHomeScreen.toggle()
                    print("login successcfully")
                
               
              
         
                

当我点击登录按钮时,它会切换并带我进入主屏幕。我找到了 视频网站上的解决方案。

【讨论】:

以上是关于FireBase 登录过程后导航到主屏幕(内容视图)。 (SwiftUI)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase 登录 iOS 13.2 的导航/Segue

使用 SwiftUI 成功登录后导航

IOS Swift - 导航到没有情节提要的主屏幕

反应本机 Firebase 身份验证错误

将登录屏幕切换到家庭 firebase 和 google

如何重置抽屉导航器打开的屏幕状态?