没有导航栏的UINavigationController?


117

我有一个通用应用程序,在iPad版本上,我正在使用UISplitViewController它创建类似于Mail应用程序的界面。

我在推送新的“详细信息”视图时遇到了麻烦,因此我决定使用,UINavigationController这样我就可以根据需要推送和弹出视图。但是,我不想使用导航视图或工具栏。但是,无论我做什么,我都无法隐藏导航栏。

我尝试取消选中IB中的“显示导航栏”,并且还尝试了以下设置:

[self.navigationController setNavigationBarHidden:YES];

viewDidLoad/ viewDidAppear/中viewWillAppear。我还在将要推送的每个视图中都尝试过。没事。

我在这里想念什么吗?是否有可能UINavigationController没有工具栏或导航栏?


该类self的实例的超类是什么?

Answers:


192

您应该能够执行以下操作:

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

其中self.navigationController(显然)是UINavigationController的实例。似乎对我有用,但是我在发布此内容之前仅对其进行了简要测试。


2
因此,在您的情况下,self.navigationController.navigationBar.hidden = YES;
Ashwin,

4
做到了!尽管我要补充一点,但我可以简单地在IB中选中Nagivation工具栏的“隐藏”框,而无需通过代码来完成。谢谢!
DOOManiac 2011年

1
是的,对此感到抱歉。我应该已经意识到您正在使用IB并提到了Hidden框而不是使用代码。我最近开始完全以编程方式创建所有接口而没有.xib文件,因此直接回答了我的问题。
Ashwin

5
我称这是这样在我的视图控制器中的viewwillapear中,- (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } 并且可以正常工作
阿里

2
navBar已隐藏,但我的视图控制器屏幕未扩展到全屏
ArdenDev 2014年

40

如果您不需要导航栏,并且想要将内容调整到导航栏通常所在的位置,则应使用

self.navigationController.navigationBarHidden = YES;

这会给您这样的结果:

在此处输入图片说明

self.navigationController.navigationBar.hidden = YES;给您一个空间,其中应该放置NavigationBar。像这样:

在此处输入图片说明


在iOS 6的结果差异上有很好的区别。从IOS 7开始,似乎已删除了空格,但是我将等待更多的人验证这种情况。
Alex Zavatone 2014年

39

在Xcode 4.3.2中:

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

    []显示导航栏

    []显示工具栏

为我工作...


8

斯威夫特4

我将其隐藏在viewWillAppear中

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

        self.navigationController?.isNavigationBarHidden = true;
    }

然后,您可以在按下segue时将其放回原处(如果要在下一个视图中使用“后退”按钮)

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

3

Swift 3以编程方式

self.navigationController.isNavigationBarHidden = true

要么

self.navigationController.navigationBar.isHidden = true

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


1

所有这些答案仍然在状态栏的顶部保留一个空格-添加此行也将其删除:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.