作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我是一名优秀的程序员,十分优秀!