objective-c - iOS hidesBottomBarWhenPushed属性,隐藏tabBar代码逻辑
怪我咯
怪我咯 2017-04-17 17:49:16
0
6
573

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

怪我咯
怪我咯

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

Antworte allen(6)
Peter_Zhu

写在init()方法;

Ty80

个人觉得在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 里面

Peter_Zhu

我也是在 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!)
        }
左手右手慢动作
/**
 *  重写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];
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!