iOS 自定义tabbar 关于push问题 小技巧

      在开发的时候,相信大家都用过tabbar ,今天我在写项目的时候也用到了tabbar  紧着着一系列问题就来了


 需求:我的项目的主要框架是tabbar ,但是用系统的tabbar不美观

     于是我就自定义了我的tabbar,创建了一个类,继承自UITabBarController,在这个类中我将系统原生的tabbar隐藏了,就写了这样一句话,

 self.tabBar.hidden=YES;

    

        然后就是一系列的我们写得不能在熟的代码了,引入viewcontroller的头文件,然后实例化,将viewcontroller都做成带导航的,放到一个数组里,在将这个数组赋给tabbar·像这样  

    TrendFashionViewController *trend=[[TrendFashionViewController alloc] init];
//    UINavigationController *trendNa=[[UINavigationController alloc] initWithRootViewController:trend];
//    trendNa.navigationBarHidden=YES;
    LifeResourceViewController *left=[[LifeResourceViewController alloc] init];
//     UINavigationController *leftNa=[[UINavigationController alloc] initWithRootViewController:left];
//    leftNa.navigationBarHidden=YES;
    MaintainManageViewController *main=[[MaintainManageViewController alloc] init];
//     UINavigationController *mainNa=[[UINavigationController alloc] initWithRootViewController:main];
//    mainNa.navigationBarHidden=YES;
    PerfectSelfPhotoViewController *per=[[PerfectSelfPhotoViewController alloc] init];
//     UINavigationController *perNa=[[UINavigationController alloc] initWithRootViewController:per];
//    perNa.navigationBarHidden=YES;
    MicroSoundViewController *mir=[[MicroSoundViewController alloc] init];
//     UINavigationController *mirNa=[[UINavigationController alloc] initWithRootViewController:mir];
   // mirNa.navigationBarHidden=YES;
    NSArray *arr=[NSArray arrayWithObjects:trend,left,main,per,mir, nil];
    self.viewControllers=arr;

   紧接着就是自定义tabbar了,实现自己想要的效果,然后接着我就把这个自定义的tabbarcontroller 在appdelegate里面 做成root了,但是当我想要push到别的页面的时候,问题来了 用原来的命令

  self.navigationController.hidesBottomBarWhenPushed=YES;


 根本就不管用,原因在于 我的tabbar是我自定义的,所以这个命令自然就不生效了,对此我也在网上查了好多办法,有的说push 的时候将tabbar移除屏幕外 回来的时候在放回来,等等,试验了一下也没试出来,后来 我就想,干脆在appdelegate里面不用自定义的tabbar当根了,用navigationcontroller 当根,然后把自定义tabbar类里面的viewcontroller 的导航都去掉,不就OK 了,这样当我想push 的时候,什么烦恼都没有了,直接push 


    

MyTabBarController *myTabBar=[[MyTabBarController alloc] init];
        UINavigationController *na=[[UINavigationController alloc] initWithRootViewController:myTabBar];
        na.navigationBarHidden=YES;
              self.window.rootViewController=na;
如上代码,就很巧妙的解决了 push以后tabbar 不消失的问题了,由于我要自定义导航栏 所以我把navigationBarHidden设置成yes了 ;


    如果你觉着其他的隐藏自定义tabbar的办法麻烦,不妨试试这个方法哦 

    当然了 大伙要是有好的办法,欢迎共享呀,(*^__^*) 嘻嘻……





你可能感兴趣的:(iOS开发小技巧)