iOS UITabBarController 的一些小技巧

1.组成

TabBarControllerView,CustomContent,TabBar

2.使用

该控制器通常情况作为NavigationController的根视图来使用,可以自定义一个Controller继承TabBarController,并实现UITabBarControllerDelegate。
在项目的使用过程由于想实现类似淘宝导航栏侧滑返回效果,在自定义的TabBarController中viewDidLoad采用了下面代码初始化每个tab的控制器。

    WscNavigationController *homeNavController = [[WscNavigationController alloc] initWithRootViewController:self.homeController];
    WscNavigationController *addressBookNavController = [[WscNavigationController alloc] initWithRootViewController:self.addressBookController];
    WscNavigationController *discoveryNavController = [[WscNavigationController alloc] initWithRootViewController:self.discoveryController];
    WscNavigationController *shoppingCartNavController = [[WscNavigationController alloc] initWithRootViewController:self.shoppingCartController];
WscNavigationController *myNavController = [[WscNavigationController alloc] initWithRootViewController:self.myController];

[self setViewControllers:@[homeNavController, addressBookNavController, discoveryNavController, shoppingCartNavController,myNavController]];

这段代码看上去没有什么问题,但在使用过程中,如果要实现类似淘宝的侧滑返回效果,首先实现这个效果需要隐藏系统navbar,并add自定义的navbar,但是引发了诸多问题。例如:使用模式向上弹出控制器,dimss控制器后,系统导航栏自动出现,导致页面同时出现两个导航栏。又如:按Home键,在返回app时也出现了同样问题。之后有通过了各种方法将系统bar隐藏并将frame设置为Zero,并控制系统bar在各种情况下的显示隐藏,非常繁琐。
在push其他页面的时候还用控制tabbar的显示和隐藏十分不便
所以比较好的方法是在TabBarController中初始化控制器时不要在包一层NavigationController,直接将ViewController加入TabBarControler中,就可以避免这种情况的出现,少了不必要的麻烦。

[self setViewControllers:@[self.homeController,self.addressBookController,self.discoveryController,self.shoppingCartController,self.myController]];
注:self.homeController采用的是惰性初始化方法。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,039评论 3 119
  • 一声惊雷 雨 从梦中惊醒 在云际徘徊 一声响雷 雨 得到了号令 从云际跃落 一声炸雷 雨 落到房顶上 在屋檐跳跃 ...
    d30b80c10dd4阅读 1,521评论 0 0
  • 人的一生最终走向哪里都是因为一次又一次的选择来决定的,从选择大学,选择专业,选择就业的城市,选择工作,再到选择...
    津博阅读 3,744评论 0 0
  • 3月24号,当在贴在会议室墙上的总分排名名单的第一页上看到我名字的时候,我想这一次,没跑了。很激动,也很欣慰自己的...
    文墨书海阅读 3,514评论 0 3