我有一个通用应用程序,在 iPad 版本上,我使用 UISplitViewController
创建一个类似于邮件应用程序的界面。
我在推送新的详细信息视图时遇到了问题,因此我决定使用 UINavigationController
,这样我就可以根据需要推送和弹出视图。但是,我不想使用导航视图或工具栏。但是无论我做什么,我都无法隐藏导航栏。
我试过在 IB 中取消选中“显示导航栏”,我也尝试过设置:
[self.navigationController setNavigationBarHidden:YES];
在 viewDidLoad
/viewDidAppear
/viewWillAppear
中。我还在将要推送的每个视图中都进行了尝试。没有任何效果。
我在这里缺少什么吗?是否可以有没有工具栏或导航栏的 UINavigationController
?
self
类的超类是什么的实例?
您应该能够执行以下操作:
self.navigationController.navigationBar.isHidden = true //Swift 5
其中 self.navigationController (显然)是 UINavigationController 的一个实例。似乎对我有用,但我只是在发布之前对其进行了简单的测试。
在 Xcode 4.3.2 中:
在故事板中选择导航控制器 在(右侧)实用程序面板中选择属性检查器 在导航控制器类别下,您有两个复选框: [] 显示导航栏 [] 显示工具栏
为我工作...
如果您想要没有导航栏,并且您希望将内容调整到导航栏通常的位置,您应该使用
self.navigationController.navigationBarHidden = YES;
这会给你这样的结果:
https://i.stack.imgur.com/UZbHX.png
而 self.navigationController.navigationBar.hidden = YES;
为您提供了一个导航栏应位于的空间。像这样:
https://i.stack.imgur.com/QuHcf.png
斯威夫特 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;
}
Swift 3 以编程方式
self.navigationController.isNavigationBarHidden = true
或者
self.navigationController.navigationBar.isHidden = true
注意:我没有看到这两种在 iOS 10 上测试的方法有什么区别。
所有这些答案仍然在状态栏的顶部留下一个空间 - 添加此行以删除它:
navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
- (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; }
一样,它可以工作