导航栏没有显示在TableView上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航栏没有显示在TableView上相关的知识,希望对你有一定的参考价值。

我无法解释为什么这段代码不起作用。由于某种原因,导航栏是半透明的,并且tableView的内容在其上滚动。

这是Button的代码

 let outlineViewController = OutlineTableviewController()
        outlineViewController.pdfOutlineRoot = pdfoutline
        outlineViewController.delegate = self

        let nav = UINavigationController(rootViewController: outlineViewController)
        self.present(nav, animated: true, completion:nil)

这是tableView的代码

super.viewDidLoad()

    let newBackButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(dismissView))

    self.navigationItem.rightBarButtonItem = newBackButton

    navigationController?.navigationBar.backgroundColor = UIColor(red:0.00, green:0.51, blue:0.78, alpha:1.0)


   self.tableView.dataSource = self
   self.tableView.delegate = self

   tableView?.register(UINib(nibName: "OutlineTableViewCell", bundle: nil),
                        forCellReuseIdentifier: "OutlineTableViewCell")
}

结果如下:背景颜色未显示,表格位于导航栏下方。

我错过了什么?

enter image description here

答案

谢谢trungduc的回复。

花了好几个小时试图找出问题所在,我终于能够通过改变根视图中的颜色来解决这个问题。

        let nav = UINavigationController(rootViewController: oulineViewController)
        nav.navigationBar.backgroundColor = UIColor(red:0.00, green:0.51, blue:0.78, alpha:1.0)
        self.present(nav, animated: true, completion:nil)
另一答案

你在提问中提到了一个神奇的词:“半透明”。

我遇到了同样的问题:导航栏显示在Storyboard的根视图中,但是在运行模拟器时 - 视图顶部没有导航栏。这解决了它:

导航控制器>导航栏> UNCHECK半透明(默认选中)。这做了两件事:

  1. 我的导航栏显示在所有后续视图中。
  2. 最顶层的子视图(在您的情况下是一个tableview)现在是Y = 0,而不是Y = 64。

enter image description here

以上是关于导航栏没有显示在TableView上的主要内容,如果未能解决你的问题,请参考以下文章

Android SystemUI 导航栏动态显示隐藏

Android SystemUI 导航栏动态显示隐藏

Android SystemUI 导航栏动态显示隐藏

底部导航栏的 Oncreate 视图问题

Android 全屏片段不显示导航和状态栏后面的元素

如何将导航栏(没有 NavigationController)和搜索栏添加到 TableView