swift - 有没有办法在快速 ViewController 中执行条件转场?

标签 swift firebase firebase-authentication segue

我正在尝试使用 Firebase 对用户登录进行身份验证。如果验证了用户的凭据,我将使用用户和错误在 if-else 语句中转到应用程序的主屏幕。但是,无论登录是否实际发生,performSegue(...) 都会执行。

我确定问题不在于 Firebase 中的验证/登录/注销问题,也不在于文本字段。

这是我的代码:

func handleSignIn(username:String, password:String) {
    Auth.auth().signIn(withEmail: username, password: password) { user, error in
        if error == nil && user != nil {
            //self.dismiss(animated: false, completion: nil)
            print("Logged in!")
            self.performSegue(withIdentifier: "toHome", sender: nil)
        } else {
            print("Error logging in: \(error!.localizedDescription)")
        }
    }
}

最好,

代码爸爸

最佳答案

我已经解决了这个问题。

上面的代码实际上是正确且有效的。问题是在以下位置调用了handleSignIn 方法:

 @IBAction func didTapLogin(_ sender: Any) {...}

该按钮本身是带有标识符“toHome”的 segue 连接,因此无论 if/else block 的计算结果如何,应用程序都会进入主菜单。

一旦我删除并重新建立从 LoginViewController 到 HomeViewController 的 Segue“toHome”(不是 HomeViewController 的“登录”按钮),此代码就可以正常工作。

关于swift - 有没有办法在快速 ViewController 中执行条件转场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602689/

相关文章:

swift - findObjectsInBackgroundWithBlock 未进入 "Block"

Swift Firebase Facebook didCompleteWithResult 错误

swift - Firebase 通过电子邮件获取用户 UID

javascript - Angular2将Firebase的响应保存到模型

ios - 如何使用Objective-C在Firebase中保存子值

android - Firebase Phone Authentication - 验证短信文本的内部化

swift - 在 Swift 中以编程方式发送 SMS/iMessage

swift - 日期字符串转换不返回小数毫秒 Swift

ios - 即使出于软件包目的而卸载应用程序后也能唯一地识别 iOS 设备

android - Flutter/cloud-firestore "Task is already complete"异常