没有导航条的 UINavigationController? ?

我有一个通用的应用程序,在 iPad 版本中,我使用 UISplitViewController来创建一个类似邮件应用程序的界面。

我在推送新的 Detail 视图时遇到了麻烦,所以我决定使用 UINavigationController,这样我就可以根据需要推送和弹出视图。但是,我不想使用导航视图或工具栏。但不管我怎么做,我都藏不住导航栏。

我试过在 IB 中取消选中“显示导航栏”,我也试过设置:

[self.navigationController setNavigationBarHidden:YES];

in the viewDidLoad/viewDidAppear/viewWillAppear. I've also tried it in each of the views that will be pushed. Nothing works.

有没有我遗漏的东西? 有没有可能有一个没有工具栏或导航栏的 UINavigationController

87945 次浏览

You should be able to do the following:

self.navigationController.navigationBar.isHidden = true //Swift 5

其中 self. NavigationController (显然)是 UINavigationController 的一个实例。似乎对我有用,但我只是在发布这个之前简单测试了一下。

在 Xcode 4.3.2中:

  1. 在故事板中选择导航控制器
  2. 在(右)实用工具面板中选择属性检查器
  3. 在“导航控制器”类别下,有两个复选框:

    显示导航栏[导航栏]

    显示工具栏[工具栏]

对我有用。

If you want no navigation bar, and you want the content to be adjusted up to where the navigation bar normally would be, you should use

self.navigationController.navigationBarHidden = YES;

This gives you a result like this:

enter image description here

self.navigationController.navigationBar.hidden = YES;给你一个导航栏应该在的位置,像这样:

enter image description here

用程序设计的 Swift 3

self.navigationController.isNavigationBarHidden = true

或者

self.navigationController.navigationBar.isHidden = true

注意: 我没有看到这两种方法在 iOS10上的测试有什么不同。

Swift 4

我把它藏在视野里

     override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)


self.navigationController?.isNavigationBarHidden = true;
}

然后你可以把它放回去,当你按一个转换(如果你想有后退按钮在下一个视图)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
self.navigationController?.isNavigationBarHidden = false;
}

所有这些答案在顶部仍然留有一个空格作为状态栏——添加这一行也可以删除这一行:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero