我使用Firebase身份驗證設置了登錄場景。在輸入正確的細節時,場景應該通過執行「loggedIn」segue進行更改。在輸入不正確的細節時,錯誤應該打印到控制檯並且什麼都不應該發生。iOS swift firebase auth不正確登錄
我發現,儘管發現錯誤(並將其打印到控制檯),控制器仍然執行segue並移至下一個屏幕(但不會將「LOGGING IN」打印到控制檯)。發現這種行爲很奇怪,有什麼想法?
我抄我的日誌在視圖控制器下面:
import Foundation
import Firebase
import FBSDKCoreKit
import FBSDKLoginKit
class LogInViewController: UIViewController{
@IBOutlet weak var Email: UITextField!
@IBOutlet weak var Password: UITextField!
@IBAction func Login(_ sender: AnyObject) {
let email = self.Email.text!
let password = self.Password.text!
if (email != "" && password != ""){
FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
if(error==nil){
print("LOGGING IN")
self.performSegue(withIdentifier: "loggedIn", sender: nil)
}
else{
print("COULDNT LOG IN")
print(error)
}
})
}
else{
let alert = UIAlertController(title: "Error", message: "Enter email and password", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
}
編輯
我在加入故事板ID loggedInViewControllerVC_ID到mealViewController身份檢查員。
這是我的新代碼:
import Firebase
import FBSDKCoreKit
import FBSDKLoginKit
class LogInViewController: UIViewController{
@IBOutlet weak var Email: UITextField!
@IBOutlet weak var Password: UITextField!
@IBAction func Login(_ sender: AnyObject) {
let email = self.Email.text!
let password = self.Password.text!
if (email != "" && password != ""){
FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
if(error==nil){
print("LOGGING IN")
let nextViewController = self.navigationController?.storyboard?.instantiateViewController(withIdentifier: "loggedInViewControllerVC_ID") as! MealViewController
self.navigationController?.pushViewController(nextViewController, animated: true)
//self.performSegue(withIdentifier: "loggedIn", sender: nil)
}
else{
print("COULDNT LOG IN")
print(error)
}
})
}
else{
let alert = UIAlertController(title: "Error", message: "Enter email and password", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
}
現在我對成功輸入登錄信息
不幸的是,我不明白你的答案 - 沒有辦法做到這一點,而不刪除從故事板和使用我原來的方法segue?努力遵循哪個控制器引用登錄場景,並在您的答案中指向以下場景。 – benjanisa
我添加了一個指向我的情節串連圖板的屏幕截圖的鏈接。故事板ID應該是導航控制器還是視圖控制器之後?另外,如何在第一個viewController中嵌入導航控制器?我只有通過故事板視圖才能完成此操作。你能否也請解釋爲什麼我目前的方法仍然因錯誤的登錄細節而停滯不前? – benjanisa
請在上面的問題中查看我的更新(我已編輯)。試過按照你的指示 - 似乎做錯了什麼。 – benjanisa