ios 导航栏设置显示和隐藏问题
2018-02-28 本文已影响5人
叶情宇
项目中有时候需要隐藏导航的需求,常用的方法有很多
1.方法一
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
对于方法一来说是有一些弊端的,尤其是在点击tabbar切换页面的时候,再回到这个页面会出现隐藏动画,这样显的很难受,不是我们想要的,我们可以通过下面的方法解决上面的问题
@interface QSProfileController ()<UINavigationControllerDelegate>
@end
@implementation QSProfileController
- (void)viewDidLoad {
[super viewDidLoad];
}
#pragma mark - UINavigationControllerDelegate
// 将要显示控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断要显示的控制器是否是自己
BOOL isShowHomePage = [viewController isKindOfClass:[self class]];
[self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];
}
@end