UINavigationController提供了一个代理方法,这个方法会在有导航栏的控制器中,当控制器加载完,导航栏要出现的时候会调用。恰当的使用这个方法可以优雅的隐藏显示导航栏
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
}
在基类BaseNavigationController中遵循UINavigationControllerDelegate协议
BaseNavigationController ()<UINavigationControllerDelegate>
使BaseNavigationController 成为UINavigationController的代理self.delegate = self;
最后一步实现代理方法
其中MineViewController 就是你要隐藏导航栏的类名称
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
BOOL isHiddenNavBar = [viewController isKindOfClass:[MineViewController class]];
[self.navigationController setNavigationBarHidden:isHiddenNavBar animated:YES];
}
优雅的在跳转页面的时候隐藏tabbar
#pragma mark - overwrite 目的是跳转导航栏的时候 自动隐藏tabbar
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (self.childViewControllers.count >= 1) {
viewController.hidesBottomBarWhenPushed = YES;
}
[super pushViewController:viewController animated:animated];
}
网友评论