我正在开发一个具有LoginViewController和HomeViewController的应用程序。我想仅在成功登录后才能进入HomeViewController。我已经读过有关以编程方式使用segue而不是将其连接到情节提要的信息,但是我有一个问题希望能为我提供帮助,我是新手。
此代码可以正常工作,除了当用户输入正确的用户电子邮件和密码时,由于未捕获的异常“ NSInvalidArgumentException”而崩溃并显示终止应用程序,原因是:“ Receiver LoginViewController没有标识符为“ testSeg”的segue
我知道我还没有定义'testSeg',但是我不知道在哪里做。如果我从情节提要板上连接segue,即使登录详细信息不正确,即使我从Identity Inspector提供了标识符,它也会进入主页。请通过检查我的LoginViewController下面的代码
提供帮助//这是我的登录代码,不确定是否应该添加prepareForSegue或如何解决
import UIKit
import Firebase
class LoginViewController: UIViewController {
let nextViewController = HomeViewController()
@IBOutlet weak var loginLbl: UILabel!
@IBOutlet weak var usernameTxt: UITextField!
@IBOutlet weak var passTxt: UITextField!
var pass = true
@IBAction func userLoginBtn(_ sender: Any) {
let username = usernameTxt.text!
let password = passTxt.text!
if username.isEmpty || password.isEmpty {
var emptyFieldsError:UIAlertView = UIAlertView(title: "Please try again", message: "Please fill in all the fields we can get you logged in to your account.", delegate: self, cancelButtonTitle: "Try again")
emptyFieldsError.show()
}
Auth.auth().signIn(withEmail: username, password: password) { (user, error) in
if user != nil {
// self.performSegueWithIdentifier("Klikur", sender: self)
OperationQueue.main.addOperation {
[weak self] in
print("ERROR STARTS HERE")
print(error)
self?.loginLbl.text = "YEAAAAY DID IT"
self?.performSegue(withIdentifier: "testSeg", sender: self)
}
} else {
if let errorString = (error! as NSError).userInfo["error"] as? String {
// errorMessage = errorString
self.loginLbl.text = "error"
}
self.loginLbl.text = "Please try again"
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
仅当正确输入登录详细信息时,我才想通过代码定义segue并转到首页。 PS:我为此使用Firebase身份验证,并且代码正常运行,只是导致崩溃的安全部分。预先谢谢你。