您的位置:首页 > 移动开发 > IOS开发

iOS导航栏隐藏

2017-10-12 14:03 204 查看


简介

我们在项目中经常遇到.从二级控制器跳转到不需要导航栏的控制器中,经常用的就是下面第一种做法:

第一种做法 
-(void)viewWillAppear:(BOOL)animated
{
self.navigationController.navigationBarHidden = YES;
[super viewWillAppear:animated];

}

- (void)viewWillDisappear:(BOOL)animated
{
self.navigationController.navigationBarHidden = NO;
[super viewWillDisappear:animated];
}


但是,有时候第一种方法不起作用;我们就需要设置self为导航控制器的代理,实现代理方法,在将要显示控制器中设置导航栏隐藏和显示,使用这种方式不仅完美切合滑动返回手势,同时也解决了切换tabBar的时候,导航栏动态隐藏的问题.
第二种做法

@interface viewController ()<UINavigationControllerDelegate>
@end

@implementation viewController

- (void)viewDidLoad {
//    self.navigationController.navigationBarHidden = YES;

[super viewDidLoad];
// Do any additional setup after loading the view.
[self setUpUI];
// 设置导航控制器的代理为self
self.navigationController.delegate = self;

}
#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];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios ios开发 导航栏