最近项目中有个需求,需要将登录页导航栏隐藏。其他页面导航正常显示。
自己用demo中尝试,在viewDidLoad简单敲下:
self.navigationController.navgationBar.hidden = YES;
首先登陆页本身会因为导航栏的隐藏而上移。好,重新调整下页面位置。
然后在跳转页面A的时候,A页面在viewDidLoad设置:
self.navigationController.navigationBar.hidden = NO;
发现页面会整体上移,了解到translucent这个属性可以调整controller的view的起始位置
于是再设置:
self.navigationController.navigationBar.translucent =NO;
然而并没什么用。
在试:
将self.navigationController.navigationBar.hidden = NO;的方式改掉
-(void)viewWillAppear:(BOOL)animated
{
// self.navigationController.navigationBar.hidden = NO;
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
self.navigationController.navigationBar.translucent =NO;
}
惊奇发现可行。但在项目中这样设置仍然不行。
理解到导航栏是页面共用的,对于导航栏,谁隐藏谁处理,最好在登录页做设置:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
}
好的,问题解决。