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

时间:2010-07-31 04:15:29

标签: iphone iphone-sdk-3.0 uinavigationcontroller uinavigationbar uinavigationitem

我一直在徘徊如何隐藏/删除/禁用导航控制器中的主要或第一个导航栏,以便我可以将图像作为整个背景屏幕但我找不到任何解决方案。

尝试隐藏主导航控制器的viewdidLoad中的titleview但是没有用。尝试使用navigationBarHidden,但它隐藏了下一个控制器堆栈的整个导航栏。

所以,我不知道该怎么做。举个例子,我希望有一个类似这个应用程序的东西 - 大师赛高尔夫锦标赛 - http://appshopper.com/sports/the-masters-golf-tournament

如果您查看屏幕1,它顶部没有任何导航栏,但是当您触摸任何选项时,它将推送到新的视图控制器并使导航栏显示在屏幕3,4和5中。

希望有人能帮助我。谢谢你!

4 个答案:

答案 0 :(得分:18)

在我的大多数应用程序中,我都有一个自定义的UIViewController类,我从中派生出所有其他自定义控制器。在其中一些中,我向基类添加了一个类似navigationBarInitiallyHidden的方法,其他类可以覆盖它。默认结果取决于应用程序的性质。

在导航控制器的委托中,当显示实现该方法的控制器时,委托相应地隐藏或显示导航控制器。由于我为隐藏或显示设置了动画,因此我会检查当前状态,如果不需要更改则不执行任何操作。

您可以在委托方法中执行更简单的操作。如果显示的控制器是根控制器,则隐藏导航栏,否则显示它是否隐藏。

- (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];
  }
}

答案 1 :(得分:12)

您可以隐藏导航栏: [self.navigationController setNavigationBarHidden:YES]; 并且您想再次显示导航栏的位置 [self.navigationController setNavigationBarHidden:NO];

答案 2 :(得分:5)

<强>隐藏/禁用

self.navigationController.navigationBarHidden = YES;

显示/启用

self.navigationController.navigationBarHidden = NO;

答案 3 :(得分:0)

您可以使用下面的代码隐藏导航栏。下面的代码将在viewWillAppear时隐藏导航栏。

目标C

-(void)viewWillAppear:(BOOL)animated
 {
        [[self navigationController] setNavigationBarHidden:YES animated:NO];
 }

<强>夫特

self.navigationController?.setNavigationBarHidden(true, animated: animated)