优雅的隐藏导航栏

2020-04-15  本文已影响0人  东了个尼

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];
}
上一篇下一篇

猜你喜欢

热点阅读