rickytan / RTRootNavigationController

Implicitly make every view controller has its own navigation bar
MIT License
2.15k stars 378 forks source link

不能直接使用self.navigationController获取tabBarItem吗? #109

Open XavierLost opened 7 years ago

XavierLost commented 7 years ago
NSLog(@"%@--%@",self.rt_navigationController,self.navigationController);
    <JPNavigationController: 0x7faa22046800>--<RTContainerNavigationController: 0x7faa2205ec00>
    self.navigationController.tabBarItem.badgeValue = nil;

我是写了个JPNavigationController 继承你的导航控制器 但是使用self.navigationController获取不到tabBarItem,所以设置不能设置tabBarItem.badgeValue,使用self.rt_navigationController就行

rickytan commented 7 years ago

直接:

self.tabBarItem.badgeValue = @"3";

就好,取决于 vc 是怎么放到 tab 中的

XavierLost commented 7 years ago

self.tabBarItem.badgeValue = @“ 3 ” ; 并不能解决,vc是用addChildViewController 添加到tab 利用UIViewController *vc = [self.tabBarController.viewControllers objectAtIndex:1]; vc.tabBarItem.badgeValue = nil; 可以解决 why??

rickytan commented 7 years ago

tabBarController 不能通过 addChildViewController 的方式,只能 setViewControllers: 。完整代码方便贴下吗

XavierLost commented 7 years ago

已经使用了[self setViewControllers:@[nav,nav1,nav3]];还是一样的效果 NSLog(@"%@--%@",self.rt_navigationController,self.navigationController); 打印结果 <JPNavigationController: 0x7faa22046800>--<RTContainerNavigationController: 0x7faa2205ec00>

rickytan commented 7 years ago

你的 nav nav1 nav3 是什么类型?

XavierLost commented 7 years ago

JPNavigationController继承你的RTRootNavigationController

rickytan commented 7 years ago

这样确实只能用 self.rt_navigationController

ZackZheng2014 commented 6 years ago

@rickytan

Notice(Only for below v0.6)

RTRootNavigationController - RTContainerViewController |- RTContainerNavigationController | - YourViewController1 - RTContainerViewController - RTContainerNavigationController - YourViewController2

看到你提示这个堆栈结构是低于v0.6的,那v0.6.3的堆栈结构有变化吗?

rickytan commented 6 years ago

结构没有变,只是通过 self.navigationController.viewControllers 也可以拿到相邻的 vc 了,之前不可以的,永远返回一个