iphone - 如何仅隐藏/禁用第一个 uinavigationbar?

标签 iphone iphone-sdk-3.0 uinavigationcontroller uinavigationbar uinavigationitem

我一直在思考如何隐藏/删除/禁用导航 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/

相关文章:

ios - 直接向iOS接收推送通知(未与应用程序链接)

ios - 即使使用AVAudioTimePitchAlgorithmSpectral,使用AVPlayer慢速播放的音质也不够好

iphone - uitableViewCell 上的 ImageView 没有出现?

iphone - NSArray - 检查对象是否在数组中?

iphone - dismissModalViewControllerAnimated 不工作

ios - 正在为 iOS7 准备的应用程序中出现奇怪的导航栏

iphone - 通过 FB Graph API 发布的照片​​没有出现在墙上(以及另外 2 个 FB 问题)

objective-c - iPhone Obj C——对字典的可变数组进行排序——显示一个字符串但按值排序

iPhone 应用程序拾取声音

iphone - 如何为所有导航 Controller 和 View Controller 设置自定义导航栏(title + titleView)?