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

C.J*_*hns 4 iphone uinavigationbar uinavigationcontroller ios

我想要隐藏UINavigationBar,它只为第一个视图自动加载导航项目,我想知道如何使这个工作.

我试着这样做

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

//.....
Run Code Online (Sandbox Code Playgroud)

但是我收到错误,因为我想我没有正确地从委托文件中调用navigationController,或者这是不可能像对待来自另一个类的方法那样调用它.

任何帮助将不胜感激.

Jos*_*nez 8

这里有一些错误.

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

viewWillAppear:应该看起来像这样:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}
Run Code Online (Sandbox Code Playgroud)

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


Kri*_*tad 6

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

否则,也许这会有所帮助: iPhone只在第一页隐藏导航栏