UINavigationController 没有导航栏?

Posted

技术标签:

【中文标题】UINavigationController 没有导航栏?【英文标题】:UINavigationController without navigation bar? 【发布时间】:2011-08-11 13:52:12 【问题描述】:

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

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

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

[self.navigationController setNavigationBarHidden:YES];

viewDidLoad/viewDidAppear/viewWillAppear。我还在将要推送的每个视图中都进行了尝试。没有任何效果。

这里有什么我遗漏的吗?是否可以有没有工具栏或导航栏的UINavigationController

【问题讨论】:

self的超类是什么的实例? 【参考方案1】:

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

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

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

【讨论】:

所以,在你的情况下,self.navigationController.navigationBar.hidden = YES; 做到了!虽然我要补充一点,我能够简单地检查 IB 中导航工具栏的隐藏框,而不是通过代码来完成。谢谢! 是的,很抱歉。我应该了解您使用 IB 并提到隐藏框而不是使用代码的事实。我最近一直在尝试完全以编程方式创建所有界面,而无需 .xib 文件,所以我直接回答了这个问题。 我称这是在我的视图控制器中的 viewwillapear 中,就像这样 - (void)viewWillAppear:(BOOL)animated self.navigationController.navigationBar.hidden = YES; 并且它有效 导航栏被隐藏,但我的视图控制器屏幕没有展开到全屏【参考方案2】:

所有这些答案仍然在状态栏的顶部留出一个空间 - 添加此行以删除它:

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

【讨论】:

【参考方案3】:

斯威夫特 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;
     

【讨论】:

【参考方案4】:

Swift 3 以编程方式

self.navigationController.isNavigationBarHidden = true

self.navigationController.navigationBar.isHidden = true

注意:我没有发现这两种在 ios 10 上测试的方法有什么区别。

【讨论】:

【参考方案5】:

如果您不希望导航栏,并且希望将内容调整到导航栏正常的位置,则应使用

self.navigationController.navigationBarHidden = YES;

这会给你这样的结果:

self.navigationController.navigationBar.hidden = YES; 为您提供了一个导航栏应位于的空间。像这样:

【讨论】:

与 iOS 6 的结果差异非常好区分。从 IOS 7 开始,空间似乎被删除了,但我会等待更多人验证是否如此。跨度> 【参考方案6】:

在 Xcode 4.3.2 中:

    在情节提要中选择导航控制器 在(右侧)实用程序面板中选择属性检查器

    在导航控制器类别下,您有两个复选框:

    [] 显示导航栏

    [] 显示工具栏

为我工作...

【讨论】:

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

UINavigationController 没有导航栏?

如果 UINavigationController 在第一个故事板中,有没有办法在第二个故事板中显示 UINavigationController?

UIViewController 呈现 UINavigationController - 没有导航栏?

UINavigationController 没有推送/显示视图

UINavigationController 没有正确推送

TableView 没有响应 UINavigationController 中的“编辑”按钮