如何为我的第一个视图隐藏UINavigationBar

时间:2011-08-23 21:04:15

标签: iphone ios uinavigationcontroller uinavigationbar

我想隐藏UINavigationBar,它只为第一个视图的Navigation项目自动加载,我想知道如何让它工作。

我试图像这样做

// RootViewController.m

#import "mydelegate.h" //-- this is where the view controller is initialized

//...

- (void)viewDidLoad
{
    [super viewDidLoad];
    navigationController *navController = [[navigationController alloc] init];
    [navigationController setNavigationBarHidden:YES animated:animated];
}

//.....

但是我收到错误,因为我猜我没有正确调用委托文件中的navigationController,或者这是不可能像其他类中的方法一样调用它。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

这里有一些问题。

  1. 您应该使用self.navigationController访问显示视图控制器的导航控制器。您的代码片段正在创建一个新的UINavigationController;隐藏那个酒吧不会给你任何东西。
  2. 您应该在viewDidLoad中隐藏导航栏,而不是隐藏viewWillAppear:中的导航栏。您可以在viewDidLoad中隐藏导航栏,导航栏将在最初显示视图时隐藏,但如果您要按下另一个显示导航栏并按下后退按钮的视图,导航栏将会仍然可见。
  3. 您的viewWillAppear:应该是这样的:

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

    您推送此导航控制器的其他视图控制器中的viewWillAppear:方法应该适当地显示或隐藏导航栏。

答案 1 :(得分:6)

您是否正在访问UINavicationController的正确实例? 您可以通过self.navigationController从任何已添加到其堆栈的UIViewController访问UINavigationController。

否则,也许这会有所帮助: iPhone hide Navigation Bar only on first page

答案 2 :(得分:-1)

iPhone hide Navigation Bar only on first page

试试这个答案。它解决了我的问题。

我也遇到了导航栏的问题。我可以让它消失,但是当它需要时我无法重新出现。此链接说明了如何解决此问题,只需在viewWillAppear中打开它,然后在viewWillDisappear中关闭。