设置隐藏导航栏的合适时机在哪里?
错误做法1. 在viewDidLoad中设置
原因:该方法在vc第一次创建时调用,如果该vc在push出一个显示导航条的vc,然后返回原vc,因不走viewDidLoad方法,那么导航条就会一直显示。
错误做法2. 在viewDidAppear中设置
原因:进入此方法时,画面已经显示在屏幕上了,此时按照默认的显示导航条,然后在设置隐藏,用户体验不好。该方法中设置已经太晚了。
正确做法3:在viewWillAppear中设置
原因:该方法是视图装载好,即将显示时(并未出现在屏幕上),而且每次从别的控制器pop返回该vc都会调用viewWillAppear。故此方法中设置最合理。
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated {
//隐藏导航栏
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
在viewWillAppear方法和viewWillDisappear方法中写上隐藏导航栏和显示导航栏代码:
(1)、viewWillAppear方法:视图即将呈现时隐藏 self.navigationController.navigationBarHidden = YES;
(2)、viewWillDisappear方法:视图即将消失显示 self.navigationController.navigationBarHidden = NO;
这样能很好的解决导航栏隐藏的问题了!