Ios 如何在成功登录后显示不同的ViewController

Ios 如何在成功登录后显示不同的ViewController,ios,swift2,xcode7,segue,viewcontroller,Ios,Swift2,Xcode7,Segue,Viewcontroller,我使用Firebase作为后端,并对登录部分进行了编码。当我使用测试帐户登录时,调试器会打印“登录:。但是,当我尝试转到主视图控制器时,会出现错误”致命错误:在展开可选值时意外地发现“nil”“代码在self.presentviewcontroller行中断。这里出了什么问题 if email != "" && password != "" { FIREBASE_REF.authUser(email, password: password, withCo

我使用Firebase作为后端,并对登录部分进行了编码。当我使用测试帐户登录时,调试器会打印“登录:。但是,当我尝试转到主视图控制器时,会出现错误”致命错误:在展开可选值时意外地发现“nil”“代码在self.presentviewcontroller行中断。这里出了什么问题

 if email != "" && password != ""
    {
        FIREBASE_REF.authUser(email, password: password, withCompletionBlock: {(error, FAuthData) -> Void in

            if error == nil
            {
                NSUserDefaults.standardUserDefaults().setValue(FAuthData.uid, forKey: "uid")

                print("logged in")
                self.logoutButton.hidden = false

                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let secondViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
                self.presentViewController(secondViewController, animated: true, completion: nil)

            }
            else{
                print("The user was not logged in")
            }

        })
    }
    else{
        let alert = UIAlertController(title: "ERROR", message: "Please Enter Email and Password", preferredStyle: .Alert)
        let action = UIAlertAction(title: "OK", style: .Default, handler: nil)
        alert.addAction(action)
        self.presentViewController(alert, animated: true, completion: nil)
    }

在主情节提要上检查是否将标识符
ViewController
设置为ViewController。

您需要使用该方法,该方法实时侦听已验证的状态

override func viewDidAppear() {
  let ref = Firebase(url: "https://<YOUR-FIREBASE-APP>.firebaseio.com")

  ref.observeAuthEventWithBlock({ authData in
    if authData != nil {
        // user authenticated
        print(authData)
        self.performSegueWithIdentifier("LoginToOtherView", sender: nil)
    } else {
        // No user is signed in
    }
  })
}
override func viewdide()出现{
let ref=Firebase(url:https://.firebaseio.com")
ref.observeAuthEventWithBlock({authData in
如果authData!=nil{
//用户认证
打印(authData)
self.performsguewithidentifier(“logintotherview”,发件人:nil)
}否则{
//没有用户登录
}
})
}
您收听的是
viewdide
,因此即使您进入导航堆栈,它也会继续激发