UITabarController了解
2017-05-10 本文已影响112人
学习路上一个远行者
讲解方法addChildViewController####
controller.title = title;
controller.tabBarItem.image = [UIImage imageNamed:image];
controller.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];
NavgationController *navController = [[NavgationController alloc] initWithRootViewController:controller];
//添加VC
[self addChildViewController:navController];
另外一个中添加VC的方式:
self.viewControllers = @[vc1, vc2,vc3];
在我们向UITabController
添加vc数组的时候,在还没有执行ViewWillAppear:
方法的时候,你可以查看一下self.tabar.subviews
,在此时subviews.count == 0
,也就是说现在系统还没有创建在tabar
上创建UIBarbutton
,那么问题是系统是在什么时候在Ttabar
上创建相对应的UIBarButton
呢? 答案是在系统执行了viewWillAppear
,如果你写的控制器是集成UITabController
,那你在重写方法viewWillAppear
的时候,是有在调用了[Super viewWillAppear]
的时候那么你就可以在在Tabar上查看到系统为你创建的UIBarButton
创建自定义Tabar####
怎么样创建一个自定义的Tabar,并且还能保证系统原本的风格,有一个方法就是偷换系统的Tabar,把系统自己创建的tabar,变换成自己自定的一个View,可能你查看API@property(nonatomic,readonly) UITabBar *tabBar
,可以看出来这个属性是一个只读的,那么我们应该怎么样赋值呢。那么我就应该用到KVC这项技术了[self setValue:tabBar forKey:@"tabBar"];
但是有几点使我们必须注意的,我们应该在什么时候替换系统的tabar,根据第上面部分的讲解,我们知道我们应该在方法
viewWillAppear
之前进行替换
改错####
我们在代码运行的过程中,我们可以看出来在tabar中的subview的类型是UITabBarButton
,我在上面一直说的是UIBarButton
Tabar
默认高度是49