Панель навигации удалена - PullRequest
0 голосов
/ 27 августа 2018

enter image description here Я использовал элемент навигации в своем приложении.В методе выхода из системы я подключился к корневому контроллеру представления, т.е. к моему loginViewController, но при этом панель навигации удаляется.Я попытался положить код для загрузки в viewWillAppear, но он все еще не работает.Не могли бы вы помочь мне?

Вот мой код для выхода из системы:

@IBAction func btnLogOutClicked(_ sender: Any) {
        let log : LoginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
        let window:UIWindow = UIApplication.shared.keyWindow!
        let navControl : UINavigationController = window.rootViewController as! UINavigationController
        if (!(navControl .isEqual(log)))
        {
            window.rootViewController = log
        }
        navControl.popToRootViewController(animated: true)
    }

My viewWillAppear-

override func viewWillAppear(_ animated: Bool) {
        self.navigationController?.isNavigationBarHidden = false
        self.navigationItem.hidesBackButton = true
        self.navigationItem.title = "Select Client"
        // create a new butto
        let button: UIButton = UIButton(type: UIButtonType.custom)
        //set image for button
        button.setImage(UIImage(named: "logo-icon"), for: UIControlState.normal)
        //set frame
        button.frame = CGRect(x: 0, y: 0, width: 50, height: 30)
        let barButton = UIBarButtonItem(customView: button)
        //assign button to navigationbar
        self.navigationItem.leftBarButtonItem = barButton


    }

Вот моя раскадровка-

Я использую pushViewController для доступа к контроллеру панели вкладок из контроллера вида входа в систему

1 Ответ

0 голосов
/ 27 августа 2018

Попробуйте следующий код для изменения стека NavigationController:

let oldVCs = self.navigationController?.viewControllers
let newVCs = [UIViewController]()

 // Add your root VC in new array of VCs
 newVCs.append(oldVCs![0])
 // Add your new VC just after your root VC
 let log : LoginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController

 newVCs.append(log)

 self.navigationController?.setViewControllers(newVCs , animated: true)

В этом случае анимация будет аналогична добавлению нового контроллера в стек.

Если вы хотите полностью оставить этосоставить и создать новый:

let log : LoginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController

let loginNavigationController = UINavigationController(rootViewController: log)            
self.view.window?.rootViewController = loginNavigationController
...