RDVTabBarController 小记
来源:互联网 发布:ipad如何登陆淘宝卖家 编辑:程序博客网 时间:2024/06/07 15:06
今天接到一个需求,在push进模块进入后,再push进一个有tabbar的界面。就果断用了RDVTabBarController来实现。
问题
这个tabbar包含三个子界面,VcA、VcB、VcC,添加后发现在子界面写的导航栏标题、导航栏按钮都没有显示。
如:
self.title = @"名片夹";self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"添加名片" style:UIBarButtonItemStylePlain target:self action:@selector(addCard)];
原因
导航栏是属于这个tabbar控制器的,所以在VcA中控制导航栏失败。
解决过程
过程一
所以改为以下代码,失败: self.tabBarController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"添加名片" style:UIBarButtonItemStylePlain target:self action:@selector(addCard)];
过程二
改为以下代码,成功显示: self.rdv_tabBarController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"添加名片" style:UIBarButtonItemStylePlain target:self action:@selector(addCard)];
过程三
上述代码含有太多初始化信息,可以初始化之后,再赋值给tabbarVC
self.title = @"名片夹";self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"添加名片" style:UIBarButtonItemStylePlain target:self action:@selector(addCard)];self.rdv_tabBarController.navigationItem.rightBarButtonItem = self.navigationItem.rightBarButtonItem; self.rdv_tabBarController.title = self.title;
可是,这样就要一个个到子控制器里面去改。
最终方案
于是在tabbar的代理方法中添加了下面代码,解决了上面的问题。
- (BOOL)tabBarController:(RDVTabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{self.title = viewController.title;self.navigationItem.rightBarButtonItem = viewController.navigationItem.rightBarButtonItem; return YES;}
注意:
需要在tabbar的控制器viewDidLoad的时候,即使加上选中控制器的代码,也不会显示第一个控制器的标题。因为子控件的title 和 导航栏按钮是在子控制器的viewDidLoad中创建的。
所以还是需要在第一个子控制器中写上:
self.rdv_tabBarController.navigationItem.rightBarButtonItem = self.navigationItem.rightBarButtonItem; self.rdv_tabBarController.title = self.title;
- RDVTabBarController 小记
- iOS RDVTabBarController
- RDVTabBarController的简单使用
- RDVTabBarController【iOS源码阅读】
- 小记
- 小记
- 小记
- 小记
- 小记
- 小记
- 小记
- 小记.
- 小记
- 小记 、
- 小记
- 小记
- 小记
- 小记
- 我的python成长之路
- 康纳的表情包
- 编译 -fPIC
- [LeetCode] Wiggle Subsequence
- 数据结构封装之 《SeqList顺序表》
- RDVTabBarController 小记
- Hibernate中遇到的 NullPointerException问题和IllegalArgumentException
- [noi2015] 软件包管理器(树链剖分)
- Mac 下 Chrome 谷歌浏览器 快捷键
- ReactNative实战之仿微信客户端
- mybatis处理and、or关系的方法
- Linux信号
- 哈夫曼编码
- 35. Search Insert Position