objective-c - iOS hidesBottomBarWhenPushed属性,隐藏tabBar代码逻辑
怪我咯
怪我咯 2017-04-17 17:49:16
[iOS讨论组]

想在baseViewController基类里做判断隐藏tabBar的逻辑,不知道应该写在哪里比较好,如何判断?我想到的是用navigationController.viewControllers.count的数量,但会涉及到两个viewContoller间声明周期的交替,在viewwillAppear和viewWillDisappear里写的,写的有问题,请问如何判断这个比较好,或者隐藏tabbar在哪里写比较好,谢谢

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(6)
天蓬老师

写在init()方法;

PHP中文网

个人觉得在navigation的代理方法里。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
     首先获取程序的主窗口
     UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow
     //获取tabBarVC
      UITabeBarController *tabBarVC = (UITabBarController*)keyWindow.rootViewController;
     //移除系统的tabBarButton
     for(UIView *tabBarButton in tabBarVC.tabBar.subviews) {
          if ([tabBarButton isKindOfClass:NSClassFromString(@“UITabBarButton”)]){
               [tabBarButton removeFromSuperview];
          }
     }
}
怪我咯

应该写在layoutsubviews 里面

天蓬老师

我也是在 nav 里面做这件事

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (self.childViewControllers.count >= 1) {
        viewController.hidesBottomBarWhenPushed = YES;
    }

    [super pushViewController:viewController animated:animated];
}
大家讲道理

CocoaTouch 在一个NavigationController进行Push操作的时候,隐藏TabBar的方式,应该是调用的sendSubviewToBack这个方法把TabBar给放到后面去。我在自定义转场动画时,通过这种方式做到和苹果默认的一样的效果。你可以试试。

let needPushTabBar = toVC.navigationController?.tabBarController != nil && toVC.hidesBottomBarWhenPushed && toVC.navigationController?.childViewControllers.count == 2
        
        if needPushTabBar {
            toVC.navigationController?.tabBarController?.view.sendSubviewToBack(tabBar!)
        }
ringa_lee
/**
 *  重写push方法实现界面跳转后的各种设置
 */
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
    if (self.childViewControllers.count > 0) {
        // push跳转后隐藏底部TabBar栏
        viewController.hidesBottomBarWhenPushed = YES;
    }
    
    // 先设置属性,再调用super的push方法,避免设置的属性被覆盖
    [super pushViewController:viewController animated:animated];
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号