Ios 导航栏已删除

Ios 导航栏已删除,ios,swift,uinavigationcontroller,uinavigationbar,Ios,Swift,Uinavigationcontroller,Uinavigationbar,我已在我的应用程序中使用导航项。在注销方法中,我弹出到根视图控制器,即我的loginViewController,但在这样做时,导航栏被删除。我已经试着将代码加载到ViewWillDisplay中,但它仍然不起作用。你能帮帮我吗 以下是我的注销代码: @IBAction func btnLogOutClicked(_ sender: Any) { let log : LoginViewController = self.storyboard?.instantiateViewCon

我已在我的应用程序中使用导航项。在注销方法中,我弹出到根视图控制器,即我的loginViewController,但在这样做时,导航栏被删除。我已经试着将代码加载到ViewWillDisplay中,但它仍然不起作用。你能帮帮我吗

以下是我的注销代码:

@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)
    }
我的观点将会出现-

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从登录视图控制器到达选项卡栏控制器

请尝试以下代码以更改
导航控制器
堆栈:

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

添加
super.viewwillbeen(动画)
作为
viewwillbeen(\uu.animated:Bool)
方法中的第一行代码,并使用
self.navigationController?.setNavigationBarHidden(false,动画:false)
代替
self.navigationController?.isNavigationBarHidden=false
谢谢您的帮助。我试图添加它,但它还不起作用。当我放置调试点并执行“po self.navigationController”时,它会打印“nil”。@Amit navControl.rootViewController=log在语法上是错误的。因为这是一个只能得到的财产。这很有效,谢谢。但它在登录屏幕的底部添加了上一个屏幕的选项卡栏。我正在使用一个选项卡栏控制器来显示不同的选项卡,当从选项卡的上注销时,选项卡栏在登录屏幕上仍然可见。在这种情况下,您的根视图是选项卡栏控制器。我猜我现在已经在帖子中附加了故事板。非常感谢。它可以根据需要工作。但有一个问题,为什么根视图是选项卡栏控制器而不是登录视图控制器?您的窗口根视图控制器是选项卡栏,并且在其上添加了导航控制器堆栈。