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?
UIViewController 呈现 UINavigationController - 没有导航栏?