swift - 有没有办法在 swift ViewController 中执行条件转场?
问题描述
我正在尝试使用 Firebase 对用户登录进行身份验证。如果验证了用户的凭据,我将在 if-else 语句中使用 user 和 error 进入我的应用程序的主屏幕。但是,无论登录是否实际发生, 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 块评估为什么,应用程序都会进入主菜单。
一旦我删除并重新建立从 LoginViewController 到 HomeViewController 的 segue“toHome”(不是 HomeViewController 的登录按钮),这段代码就可以正常工作。
推荐阅读
- cakephp - E/Volley:[839] BasicNetwork.performRequest:意外响应代码 404
- python - 如何在 Python 中将负指数数转换为十进制数?
- python - 在 Python 中与 WebSocket 连接时出错:TypeError: 'str' object is not callable
- javascript - 自定义工具提示 React ChartJs
- html - 需要帮助修复具有过度元素的图像上的悬停效果的 z-index 问题
- php - 如何使用参数定义 php 常量以防止声纳警报
- php - PHP API 调用的方法,少脚本 vs 多脚本
- java - 满足条件时在Java中打破多个for循环Java
- postgresql - 如何根据时间范围分组
- excel - VBA Powerpoint - 在文本框中结合普通文本和方程式