Мое приложение завершает работу из-за необработанного исключения "NSInvalidArgumentException" - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над приложением, в котором есть LoginViewController и HomeViewController. Я хочу перейти к HomeViewController только в случае успешного входа в систему. Я читал об использовании программы Segue программно, а не о ее подключении к раскадровке, но у меня есть проблема, с которой мне хотелось бы, чтобы вы мне помогли, я новичок в Swift.

Этот код работает отлично, за исключением того, что когда пользователь вводит правильную электронную почту и пароль пользователя, он вылетает и говорит Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Receiver LoginViewController не имеет перехода с идентификатором« testSeg »*

Я знаю, что я еще не определил 'testSeg', но я не знаю, где это сделать. Если я подключаю переход от раскадровки, он переходит на домашнюю страницу, даже если данные для входа не верны, и даже если я даю ему идентификатор из инспектора идентификации. Пожалуйста, помогите, проверив мой код 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.
    }


}

Я хочу определить последовательность по коду и перейти на домашнюю страницу, только если данные для входа введены правильно. PS: Я использую Аутентификацию Firebase для этого, и код работает правильно, только та часть, которая вызывает сбой. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Ваш код верен, но, возможно, вы забыли создать идентификатор для себя, для решения этой проблемы вам следует создать форму текущего контроллера представления для другого контроллера представления и предоставить вам это имя, например, так.

enter image description here

0 голосов
/ 19 июня 2019

Ваш код правильный. Ваша раскадровка, вероятно, неверна. Вам нужно создать переход из объекта контроллера представления, а не кнопки «входа», чтобы он не срабатывал, как только пользователь нажимает кнопку. - Кредиты для: @ Paulw11

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...