ios - 我的应用程序由于未捕获的异常 'NSInvalidArgumentException' 而终止

标签 ios swift xcode firebase

我正在开发一个具有 LoginViewController 和 HomeViewController 的应用程序。我只想在登录成功后才转到 HomeViewController。我已经阅读过有关以编程方式使用 segue 而不是将其连接到 Storyboard的内容,但我有一个问题希望你能帮助我解决,我是 swift 的新手。

此代码工作正常,只是当用户输入正确的用户电子邮件和密码时,它会崩溃并显示由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“接收器 LoginViewController 没有标识符为“testSeg”的 segue”

我知道我还没有定义“testSeg”,但我不知道在哪里定义。如果我从 Storyboard连接 Segue,即使登录详细信息不正确,即使我从身份检查器给它一个标识符,它也会转到主页。请帮助检查我下面的 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 部分。预先感谢您。

最佳答案

您的代码是正确的。您的 Storyboard可能不正确。您需要从 View Controller 对象而不是“登录”按钮创建segue,以便用户点击按钮后不会立即触发它。 – 致谢:@Paulw11

关于ios - 我的应用程序由于未捕获的异常 'NSInvalidArgumentException' 而终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675537/

相关文章:

ios - 从 iOS8 小部件访问 Dropbox Datastore

ios - 当我想使用 tableview.deleteRows(at : , with: ) 时应用程序崩溃

ios - 具有动态大小内容的 UIScrollView

XCode 4 下载 mac os x 10.6 核心库?

xcode - NSLog 给我发出不可纠正的警告

ios - swift 3 : How to give option to choose the phone number to call

ios - iOS解析视频的json

ios - UIWebView 不会对 loadHTMLString 函数下载的资源使用磁盘缓存

ios - 在 iOS 中以编程方式删除配对的蓝牙设备

ios - AVplayer 不会在锁屏或后台播放来自 url 的音频