UINavigationController没有导航栏?

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

我无法推送新的Detail视图,所以我决定使用UINavigationController这样我就可以按需要推送和popup视图。 但是,我不想使用导航视图或工具栏。 但不pipe我做什么,我都无法隐藏导航栏。

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

 [self.navigationController setNavigationBarHidden:YES]; 

viewDidLoad / viewDidAppear / viewWillAppear 。 我也尝试过在每一个将推动的意见。 没有任何工作

有什么我在这里失踪? 是否有可能没有工具栏或导航栏的UINavigationController

你应该能够做到以下几点:

 self.navigationController.navigationBar.hidden = YES; 

self.navigationController(显然)是UINavigationController的一个实例。 似乎为我工作,但我只是简单地testing它发布之前。

在Xcode 4.3.2中:

  1. select故事板中的导航控制器
  2. 在(右)工具面板中select属性检查器
  3. 在导航控制器类别下,您有两个checkbox:

    []显示导航栏

    []显示工具栏

为我工作…

如果你不需要导航栏,而且你想把内容调整到导航栏通常的位置,你应该使用

 self.navigationController.navigationBarHidden = YES; 

这给你一个这样的结果:

在这里输入图像说明

self.navigationController.navigationBar.hidden = YES; 给你一个导航栏应该在的空间。 喜欢这个:

在这里输入图像说明

Swift 3以编程方式

 self.navigationController.isNavigationBarHidden = true 

要么

 self.navigationController.navigationBar.isHidden = true 

注意:我没有看到在iOS 10上testing这两种方法的区别。

斯威夫特4

我将它隐藏在视野里

  override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.isNavigationBarHidden = true; } 

然后当你推一个segue时,你可以把它放回去(如果你想在下一个视图上有后退button)

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