我一直在思考如何隐藏/删除/禁用导航 Controller 中的主导航栏或第一个导航栏,以便我可以将图像作为整个背景屏幕,但我找不到任何解决方案。
尝试在主导航 Controller 的viewdidLoad中隐藏标题 View ,但没有成功。尝试使用navigationBarHidden,但它隐藏了下一个 Controller 堆栈的整个导航栏。
所以,我不知道该怎么做。举个例子,我想要一个像这样的应用程序 - 大师高尔夫锦标赛 - http://appshopper.com/sports/the-masters-golf-tournament .
如果您查看屏幕 1,它的顶部没有任何导航栏,但是当您触摸任何选项时,它会推送到新的 View Controller ,并使导航栏显示为屏幕 3,4 和 5 中的样子。
希望有人能帮我解决这个问题。非常感谢!
最佳答案
在我的大多数应用程序中,我都有一个自定义 UIViewController 类,我从中派生所有其他自定义 Controller 。在其中一些方法中,我向基类添加了一个类似 navigationBarInitiallyHidden
的方法,其他类可以重写该方法。默认结果取决于应用程序的性质。
在导航 Controller 的委托(delegate)中,当显示实现该方法的 Controller 时,委托(delegate)会相应地隐藏或显示导航 Controller 。由于我为隐藏或显示设置了动画,因此我会检查当前状态,如果不需要更改,则不执行任何操作。
您可以在委托(delegate)方法中做一些更简单的事情。如果显示的 Controller 是根 Controller ,则隐藏导航栏,否则如果隐藏则显示它。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ( viewController == rootController ) {
[navigationController setNavigationBarHidden:YES animated:animated];
} else if ( [navigationController isNavigationBarHidden] ) {
[navigationController setNavigationBarHidden:NO animated:animated];
}
}
关于iphone - 如何仅隐藏/禁用第一个 uinavigationbar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376770/