我想隐藏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,或者这是不可能像其他类中的方法一样调用它。
非常感谢任何帮助。
答案 0 :(得分:8)
这里有一些问题。
self.navigationController
访问显示视图控制器的导航控制器。您的代码片段正在创建一个新的UINavigationController;隐藏那个酒吧不会给你任何东西。viewDidLoad
中隐藏导航栏,而不是隐藏viewWillAppear:
中的导航栏。您可以在viewDidLoad
中隐藏导航栏,导航栏将在最初显示视图时隐藏,但如果您要按下另一个显示导航栏并按下后退按钮的视图,导航栏将会仍然可见。 您的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中关闭。