В то время как текущая навигация затем представила кнопку панели viewcontroller, которая не появляется, почему в swift

#swift #uinavigationcontroller

#swift #uinavigationcontroller

Вопрос:

мой поток viewcontroller будет таким, как показано ниже:

   navigationcontroller -> logoutviewcontroller ->(present) 

                       viewcontroller -> (present) logoutviewcontroller (bar button coming)
                                |
                           loginviewcontroller
                                |
                        (present) logoutviewcontroller (bar button not coming)   
 

Код logoutVC:

   override func viewDidLoad() {
    super.viewDidLoad()        
    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "logout", style: .plain, target: self, action: #selector(handleLogout))
    }


  @objc func handleLogout(){

let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.present(vc, animated: true, completion: nil)

 }
 

Код LoginVC: при представлении logoutVC, но кнопка bar не появляется .. почему

  @IBAction func loginButn(_ sender: Any) {

guard  let email = emailTf.text, let password = passwordTf.text
else {
    print("form is not valid")
    return
}
Auth.auth().signIn(withEmail: email, password: password, completion: { (user, error) in
    
    if error != nil{
        print("login adding error: (String(describing: error))" as Any)
        return
    }
    print("login sucessfully")
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "LogOutViewController") as! LogOutViewController
        
    self.present(vc, animated: true, completion: nil)
    
})
}
 

пожалуйста, предложите здесь код

Ответ №1:

Если под кнопкой bar вы подразумеваете navigationController ‘s navigationBar , вам не нужно представлять ViewController , но вам нужно использовать

 self.navigationController?.pushViewController(vc, animated: true)
 

Комментарии:

1. если я это сделаю pushViewController , то никуда не пойду .. оставаясь на странице входа

2. Проверьте, navigationController не равно нулю