iOS一级页面隐藏导航栏,但是还是可以push和pop,只需要两句代码。
- (void)viewWillAppear:(BOOL)animated {
//如果出现返回出现黑色部分,加上这段代码
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
这样写会有一个问题,进入页面的时候导航栏会有一个向上消失的动画。
用下面这个方法,就不会出现这个问题了,在navigationController的代理方法中实现。
- (void)viewDidLoad {
[super viewDidLoad];
// 设置导航控制器的代理为self
self.navigationController.delegate = self;
}
#pragma mark - UINavigationControllerDelegate
// 将要显示控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断要显示的控制器是否是自己
BOOL isShowPersonPage = [viewController isKindOfClass:[self class]];
[self.navigationController setNavigationBarHidden:isShowPersonPage animated:YES];
}