ios - 我的应用程序因未捕获的异常“NSInvalidArgumentException”而终止
问题描述
我正在开发一个具有 LoginViewController 和 HomeViewController 的应用程序。只有成功登录后,我才想去 HomeViewController。我已经阅读了有关以编程方式使用 segue 而不是将其连接到情节提要的信息,但我有一个问题希望您能帮助我解决,我是 swift 新手。
此代码完美运行,除了当用户输入正确的用户电子邮件和密码时它崩溃并说由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“接收者 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 身份验证,并且代码工作正常,只是导致崩溃的 segue 部分。先感谢您。
解决方案
你的代码是正确的。您的故事板可能不正确。您需要从视图控制器对象创建 segue,而不是“登录”按钮,以便用户点击按钮时不会触发它。- 致谢:@Paulw11
推荐阅读
- python - 如何使用数据着色器为图形的节点着色?
- javascript - 是否可以在无状态组件上使用 react-dates?
- javascript - 如何根据路由参数仅导入一个用户?
- c# - 我们可以将事务范围应用于 1 个请求的整个 API 操作吗
- javascript - 确定了正确的元素,它是父元素,但我无法删除它
- lua - 为什么 Lua 报告“找不到指定的程序”。对于从源代码编译的这个库?
- python-3.x - 在句点字符 (".") 后添加空格字符 (" ") 2 个字符空格?
- sockets - 如何在 Haskell 中从套接字发送和接收消息
- c++ - 在另一个向量中搜索一个向量
- dolphindb - 如何在 DolphinDB 中为每十行从表中选择一行