RDVTabBarController

2018-07-20  本文已影响11人  vicki753

项目的需求

希望能在点击第二个tabbarbutton的时候可以把下面的tabbar隐藏掉,然后上面的导航栏可以把返回键显示出来。点击返回键,返回第一个页面。

遇到的问题

[[self rdv_tabBarController] setTabBarHidden:YES animated:YES];

外卖项目使用的第三方框架:RDVTabBarController
遇到一个问题:就是它本身有一个hidden的设置,但是很奇怪但又也理解,有这个想法是因为我对tabbar可能还真的不理解,先记录一下:
RDVTabBarController 初始化,设置了三个KHNavController
这里有一个需求就是在点击第二个nav控制器的时候,需要把tabbar隐藏,这个第三方其实做得很好,把接口已经暴露出来了。

解决之路

刚开始我第一反应是在viewwillappear中设置
[[self rdv_tabBarController] setTabBarHidden:YES animated:YES]; 但很快问题暴露出来了,三个nav中的rootviewController中的viewWillAppear中设置这个表达式的话,然后发现,第一次从控制器(RDVTabBarController)中的index :0中点到index:1的时候就发现,是可以直接把tabbar隐藏掉,而且不会乱掉布局,但是返回后再次点击第二个控制器按钮,这时候就乱掉了,nav虽然显示,但明显view上去了,tabbar虽然消失,但是下面消失的地方缺损了,也就是view的高度是正确的,但是控制器的nav是错的,这个就很烦躁了,想了很多办法去解决,但是下面的那一截永远!改不掉!好吧,只能看它的文档了。
嗯,很庆幸它有一个代理,我在appdelegate初始化的它们,所以就让appdelegate遵守它的协议,有一个didselected的方法,判断点的哪个,然后把tabbar消失掉,就这样可以了

    -(void)tabBarController:(RDVTabBarController     *)tabBarController   didSelectViewController:(UIViewController *)viewController {
   NSInteger index = tabBarController.selectedIndex;
    if (index == 1) {
        [tabBarController setTabBarHidden:YES animated:YES];
    }  
  }
上一篇下一篇

猜你喜欢

热点阅读