如何处理登录视图

时间:2016-12-09 09:49:57

标签: swift asynchronous firebase firebase-authentication

我有一个快速3,xcode 8,ios10,Firebase开发。项目并尝试构建登录/创建用户流程。我有三个观点 -

  1. Mainview(应用程序)
  2. Loginview
  3. Createuserview
  4. 当应用程序加载时,我检查用户是否在Mainview中的“viewDidAppear”登录,如果不是,我打开LoginView。如果用户从视图2转到视图3 - createuserview并创建一个useraccount,我就不能解除(关闭)视图2并获取视图1中的“viewDidAppear”以触发并检查用户是否已登录。

    创建了useraccount并正确登录但我无法忽略视图2和3并打开视图1(Mainview)。如果主视图打开,视图必须检查用户是否已登录,而不是打开视图2(登录)agin,这可能很难与异步。编程。

    感谢您的帮助,我真的被困在这里。视图1中的一些代码 -

        override func viewDidAppear(_ animated: Bool) {
    
            super.viewDidAppear(true)       
    
            print("*** viewDidAppear ***")
    
            if FIRAuth.auth()?.currentUser != nil {
    
                print("CHECK - USER LOGGED IN")
    
            } else {
    
                print("CHECK - USER LOGGED OUT")
                self.performSegue(withIdentifier: "segueLogin", sender: nil)
                return
    
            }
    }
    

1 个答案:

答案 0 :(得分:1)

在View 3中成功创建新用户后:Createuserview触发委托方法以返回View 2

protocol NewUserCreatedSuccessProtocol {
   func userCreatedSuccessAndReturn(user : FirebaseUser)
}

class CreateUserview {
   var delegate : NewUserCreatedSuccessProtocol! = nil
   func handleSignUp() {
       if delegate != nil {
          self.dismiss(animated: true, completion: nil)
          self.delegate.userCreatedSuccessAndReturn(user: Insert())
       }
   }
}


extension LoginView : NewUserCreatedSuccessProtocol {

   func userCreatedSuccessAndReturn(user : FirebaseUser) {
     self.dismiss(animated: true, completion: nil)
   }  
}

这样,您可以在成功创建新用户时忽略这两个视图。您也可以在解雇之前显示警报。

希望这会有所帮助!!