美文网首页iOS UIKitBug(代码)移动
关于UIViewController的属性——hidesBott

关于UIViewController的属性——hidesBott

作者: 风裳水佩 | 来源:发表于2016-05-06 14:45 被阅读1811次

    今天闲来无事来聊一聊这个反复刷新我开发观的属性——hidesBottomBarWhenPushed。

    在开发的过程中总会遇到有些页面有tabbar,而有些页面没有。比如:

    那么有tabbar的页面去往没有的页面就需要调用属性self.hidesBottomBarWhenPushed=YES;

    可是,这个属性并不是这么简单就可以的。你push过去了回来还需要有tabbar。这个时候又怎么办呢?好的,我上网查了一下,于是有了第一种方法。

    方法1.

    self.hidesBottomBarWhenPushed=YES;

    [self.navigationController pushViewController:[WebViewController new]animated:YES];

    self.hidesBottomBarWhenPushed=NO;


    我亲身测试成功,这样确实可以而且用了好长时间,到后来项目快结束的时候我发现很多地方都有这样的话对于优化代码来说实在太麻烦。我就想没有什么更好的解决办法了吗?于是我又上网搜了一下。于是,就有了下面这样的改进:

    方法2.

    WebViewController *VC = [WebViewController new];

    VC.hidesBottomBarWhenPushed=YES;

    [self.navigationController pushViewController:VC animated:YES];


    这样写之后,可以保证hidesBottomBarWhenPushed的属性有每一个控制器单独管理,相对来说更加清晰一些。可是我总是感觉有些怪怪的。难道每次push的时候都要这样写吗?于是我不死心,继续上网搜查有没有更好的解决办法,终于我发现了一个简直就是对我的项目量身定做的一个方法:

    方法3.

    在每一个视图控制器内的方法做如下操作:

    - (void)viewDidAppear:(BOOL)animated {

    [superviewDidAppear:animated];

    self.hidesBottomBarWhenPushed=YES;

    }

    在需要显示tabbar的视图控制器中做这样的操作:

    - (void)viewDidDisappear:(BOOL)animated {

    [superviewDidDisappear:animated];

    self.hidesBottomBarWhenPushed=NO;

    }

    这样就完全把hidesBottomBarWhenPushed的属性交给每一个视图控制器管理了。可是有人要问了,这样不是比之前两个方法更麻烦吗?这里就要说为什么这个方法是量身定做的了。

    因为我的所有视图控制器都继承于一个自定义的JPTViewController。所以我在这里面实现

    - (void)viewDidAppear:(BOOL)animated {

    [superviewDidAppear:animated];

    self.hidesBottomBarWhenPushed=YES;

    }

    的方法其他所有视图控制器都能够实现这样的功能。而我只在“首页”“产品”“我的”“更多”这四个需要显示tabbar的页面实现

    - (void)viewDidDisappear:(BOOL)animated {

    [superviewDidDisappear:animated];

    self.hidesBottomBarWhenPushed=NO;

    }

    方法就可以了。


    这就是为什么这个方法对我来说是量身定做了。

    我也不知道有没有其他的方法,总之这里只是总结一下我使用这个属性的心得。

    如果有其他更好的方法,希望大神赐教。

    相关文章

      网友评论

      • EnjoyJS:最后一种方式有 bug, 当快速切换 tabbar 的几个页面时, 快到几乎是同时点击的时候, tabbar 就不见了, 当然 push 一次之后再回来会再出现, 变态的测试偶然发现的这个问题...
        我叫山鸡_:敲黑板。变态的测试
      • AbnerZhang:我是在下一个页面的初始化里写的, 但是感觉还是不太好
      • a1634a52a033:我也是这样想的。。。以为可以成功但是BUG嵌套BUG,底下留白了...会遮住push过去的视图
      • kinmo:的确,项目写完之后发现一堆hidesBottomBarWhenPushed,赶紧好蛋疼。。。
      • iOS程序犭袁:Github上搜下CYLTabBarController,看下做法
        风裳水佩:@iOS程序犭袁 CYL大神,很感谢你的那些干货。我都看了,这个包装的确不错。

      本文标题:关于UIViewController的属性——hidesBott

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