美文网首页
RDVTabBarController

RDVTabBarController

作者: vicki753 | 来源:发表于2018-07-20 15:26 被阅读11次

    项目的需求

    希望能在点击第二个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];
        }  
      }

    相关文章

      网友评论

          本文标题:RDVTabBarController

          本文链接:https://www.haomeiwen.com/subject/srwfmftx.html