999yzc亚洲城在线娱乐城iOS hidesBottomBarWhenPushed属性,隐藏tabBar代码逻辑

( 999yzc亚洲城在线娱乐城 )

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

写在init方法;

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

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

应该写在layoutsubviews 里面

我也是在 nav 里面做这件事

- voidpushViewController:UIViewController *viewController animated:BOOLanimated
{
    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.sendSubviewToBacktabBar!
        }

/**
 *  重写push方法实现界面跳转后的各种设置
 */
- voidpushViewController:UIViewController *viewController animated:BOOLanimated{
    if self.childViewControllers.count > 0 {
        // push跳转后隐藏底部TabBar栏
        viewController.hidesBottomBarWhenPushed = YES;
    }
    
    // 先设置属性,再调用super的push方法,避免设置的属性被覆盖
    [super pushViewController:viewController animated:animated];
}

(看完/读完)这篇文章有何感想! 999yzc亚洲城在线娱乐城的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注