在平时的开发过程中我们经常会遇到一些视图需要显示导航栏,一些视图不需要显示导航栏,但当视图界面多了以后,管理起来就相当麻烦,设置不好的情况下,就会出现有时该显示的不显示,该隐藏的不隐藏,或者跳转时动画错位不流畅,今天介绍一种既设置方便,又跳转流畅的方式。
首先创建程序内所有视图控制器的父视图 BaseViewController
在父视图的.h文件内声明参数
/// 是否显示导航栏
@property (nonatomic, assign) BOOL isShowNav;
在父视图的.m文件内实现方法
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
if (self.isShowNav == NO) {
[self.navigationController setNavigationBarHidden:YES animated:animated];
} else {
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
self.isShowNav = YES;
}
让程序内所有界面控制器继承自此父视图,如果不需要隐藏导航,就什么都不需要操作,如果需要隐藏导航,只需要在viewDidLoad方法内设置self.isShowNav = NO即可,原理是viewDidLoad方法先于viewWillAppear方法执行,在viewDidLoad设置参数,可以保证设置导航栏是否显示的方法只被执行一次。