Когда вы пытаетесь выйти из системы или вернуться к главному экрану, почему вы получили ошибку «Обнаружено ноль», если нет даже дополнительного? - PullRequest
0 голосов
/ 26 января 2020

Строка, в которой ошибка:

self.passwordField.delegate = self

Код с кнопки:

 @IBAction func unwindToRed(_ sender: Any) {

    do {
                   try Auth.auth().signOut()
                   let ViewController1 = ViewController()
                   let ViewNavigationController = UINavigationController(rootViewController: ViewController1)
                   self.present(ViewNavigationController, animated: true, completion: nil)
               } catch let err {
                   print(err)
               }

}

Это соответствующий код домашней страницы:

class ViewController: UIViewController, UITextFieldDelegate {



@IBOutlet weak var emailField: UITextField!

@IBOutlet weak var passwordField: UITextField!

var userUID: String!
var databaseRef: DatabaseReference!

override func viewDidLoad() {

    super.viewDidLoad()

    databaseRef = Database.database().reference()


    self.passwordField.delegate = self
    self.emailField.delegate = self

    emailField.attributedPlaceholder = NSAttributedString(string: "Email",
    attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])

    passwordField.attributedPlaceholder = NSAttributedString(string: "Password",
    attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])



}
 override func viewDidAppear(_ animated: Bool) {
    if let _ = KeychainWrapper.standard.string(forKey: "uid") {
        self.performSegue(withIdentifier: "tohome", sender: nil)
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
     @IBAction func signInPressed(_ sender: Any) {

   Auth.auth().createUser(withEmail: (emailField.text ?? ""), password: (passwordField.text ?? ""))  { (user, error) in
       if let _eror = error {
           //something bad happning
           print(_eror.localizedDescription )
        let alert = UIAlertController(title: "Error", message: "Invalid Entry or Duplicate.", preferredStyle: UIAlertController.Style.alert)
                             let action = UIAlertAction(title: "Ok", style: .default, handler: nil)
                             alert.addAction(action)
                             self.present(alert, animated: true, completion: nil)

       }else{
           //user registered successfully
           print(user as Any)
                 if let userID = user?.uid {
                                           KeychainWrapper.standard.set((userID), forKey: "uid")

                                           let databaseRef = Database.database().reference()


databaseRef.child("people").child(userID).child("users").setValue(self.emailField.text!)

databaseRef.child("people").child(userID).child("postID").setValue(userID)

                                           self.performSegue(withIdentifier: "tohome", sender: nil)
                                       }

       }
    }
}

 @IBAction func loginInPressed(_ sender: Any) {
 Auth.auth().signIn(withEmail: (emailField.text ?? ""), password: (passwordField.text ?? ""))  { (user, error) in
 if let _eror = error {
               //something bad happning
               print(_eror.localizedDescription )
            let alert = UIAlertController(title: "Error", message: "Incorrect Email or Password.", preferredStyle: UIAlertController.Style.alert)
                                 let action = UIAlertAction(title: "Ok", style: .default, handler: nil)
                                 alert.addAction(action)
                                 self.present(alert, animated: true, completion: nil)

           }else{
               //user registered successfully
               print(user as Any)
                    if let userID = user?.uid {
                        KeychainWrapper.standard.set((userID), forKey: "uid")
                        self.performSegue(withIdentifier: "tohome", sender: nil) }

           }
        }
}

1 Ответ

0 голосов
/ 27 января 2020

Проблема скрывается в этой строке:

@IBAction func unwindToRed(_ sender: Any) {
    do {
          try Auth.auth().signOut()
          let ViewController1 = ViewController() // <-- This is the problem
          let ViewNavigationController = UINavigationController(rootViewController: ViewController1)
          self.present(ViewNavigationController, animated: true, completion: nil)
     } catch let err {
          print(err)
     }

}

Поскольку вы используете раскадровки для создания своих представлений, вам следует создать экземпляр контроллера представлений из раскадровки. Чтобы сделать это правильно, пожалуйста, обратитесь к Создание контроллеров представления из раскадровки .

Если вы новичок в разработке iOS или не знаете, почему это необходимо, обратитесь к этой публикации , в которой объясняется создание экземпляра контроллера представления из раскадровки или создание нового экземпляра. .

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