情景:?一級(jí)頁(yè)面不顯示導(dǎo)航欄 ,二級(jí)頁(yè)面顯示導(dǎo)航欄.
方法一 適用于push/pop:
一級(jí)頁(yè)面中?
- (void)viewWillAppear:(BOOL)animated {
? ? [super viewWillAppear:animated];
? ? [self.navigationController setNavigationBarHidden:YES animated:animated];
}- (void)viewWillDisappear:(BOOL)animated {
? ? [super viewWillDisappear:animated];
? ? [self.navigationController setNavigationBarHidden:NO animated:animated];
}
方法二(都適用):
?設(shè)置self為導(dǎo)航控制器的代理,實(shí)現(xiàn)代理方法,在將要顯示控制器中設(shè)置導(dǎo)航欄隱藏和顯示,使用這種方式不僅完美切合滑動(dòng)返回手勢(shì),同時(shí)也解決了切換tabBar的時(shí)候,導(dǎo)航欄動(dòng)態(tài)隱藏的問(wèn)題.
@interface HomePageController ()
@end
@implementation HomePageController
#pragmamark - lifeCycle
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? // 設(shè)置導(dǎo)航控制器的代理為
selfself.navigationController.delegate= self;
}#pragmamark - UINavigationControllerDelegate// 將要顯示控制器- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
? ? // 判斷要顯示的控制器是否是自己BOOL isShowHomePage = [viewController isKindOfClass:[selfclass]];
? ? [self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];
}
寫(xiě)個(gè)基類(lèi)viewcontroller,只要在基類(lèi)viewcontroller中:
- (void)viewWillAppear:(BOOL)animated {
? ? [super viewWillAppear:animated];
? ? [self.navigationController setNavigationBarHidden:self.navigationHidden animated:animated];
}