在开发的时候,相信大家都用过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的办法麻烦,不妨试试这个方法哦
当然了 大伙要是有好的办法,欢迎共享呀,(*^__^*) 嘻嘻……