在Swift中,导航栏将消失,并且不再返回

在Swift中,导航栏将消失,并且不再返回,swift,uinavigationcontroller,uinavigationbar,pushviewcontroller,Swift,Uinavigationcontroller,Uinavigationbar,Pushviewcontroller,我试图通过按下按钮从当前控制器中按下一个新的视图控制器。但是,新控制器一出现,顶部的导航栏就消失了,我尝试了很多方法,但似乎无法恢复 我以编程方式编写所有代码,而不使用接口生成器 我试过下面列出的代码,但都不起作用 override func viewDidLoad() { super.viewDidLoad() self.navigationController?.setNavigationBarHidden(false, animated: false) self.nav

我试图通过按下按钮从当前控制器中按下一个新的视图控制器。但是,新控制器一出现,顶部的导航栏就消失了,我尝试了很多方法,但似乎无法恢复

我以编程方式编写所有代码,而不使用接口生成器

我试过下面列出的代码,但都不起作用

  override func viewDidLoad() {
    super.viewDidLoad()
self.navigationController?.setNavigationBarHidden(false, animated: false)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "backimg"), style: .plain, target: self, action: #selector(backTapped))

    let webV:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
    webV.loadRequest(NSURLRequest(url: NSURL(string: "https://*****************.com")! as URL) as URLRequest)
    webV.delegate = self;
    self.view.addSubview(webV)
    self.navigationController?.navigationBar.isHidden = false
    navigationController?.isNavigationBarHidden = false
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    self.navigationController?.navigationBar.isHidden = false
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    self.navigationController?.navigationBar.isHidden = false
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

@objc func backTapped(_ sender: Any){
    self.dismiss(animated: true, completion: nil)

}
我正试图从按钮的目标功能按下view controller,如下所示:

  @objc func parkingTimerTapped(_ sender: Any) {
    let pp = ParkingModeScheduleView()

    self.present(pp, animated: true, completion: nil)
    print("Parking Timer Tapped")
 }
我还尝试使用以下命令推送视图控制器:

  self.navigationController?.pushViewController(pp, animated: true)
我是做错了什么还是遗漏了什么?

使用self.present(pp,动画:true,完成:nil)将新的视图控制器显示为模态,因此它根本不是导航堆栈的一部分,这就是为什么没有导航栏的原因


我建议尝试使用
self.navigationController?.pushViewController(pp,动画:true)
,但首先检查
self.navigationController
是否出于某种原因不是
nil
。同时从您的
倒车模式计划视图中删除所有导航栏隐藏的相关方法

您需要像这样在UINavigation controller中添加倒车模式计划视图

@objc func parkingTimerTapped(_ sender: Any) {
    let pp = ParkingModeScheduleView()
    let navigation = UINavigationController(rootViewController: pp)
    self.present(navigation, animated: true, completion: nil)
    print("Parking Timer Tapped")
 }

你检查过你的导航控制器不是零吗?我不知道如何检查,但是导航控制器显示在我刚才制作的所有其他屏幕和控制器上。最近我又补充了一个问题,遇到了这个问题。如果它在所有其他视图中都工作并显示,那么它不可能为零?!或者可以吗?@WasimMalek我刚试着打印出来,是的,它确实是零。但如果它不在所有其他控制器上,怎么可能呢?我怎样才能修好它?非常感谢您指出这一点。您需要在导航控制器中添加此视图控制器。如果您使用的是故事板,请选择“视图控制器”并嵌入到导航控制器中。然后您需要在UINavigation中添加您的parkingModeScheduleview。让navigation=UINavigationController(rootViewController:pp),然后呈现navigation而不是pp