采用TabBarController实现过程非常简单,由于TabBarController默认生成的view是不带标题栏的,所以还需要结合navigation Controller。另外在此简单介绍了tabBar的隐藏显示,选中监听,以及icon右上方小角标的显示。
下面通过例子说明:下载地址
1. 创建一个Single View应用
路径为 File> New> New Project-Single View Application
2. 添加TabBarController
删除原storyboard中的firstResponder view.在对象库中拖一个Tab Bar Controller到storyboard中。
它默认带两个tab。自行添加第三个tab.在对象库中拖一个ViewController到面板中。选中TabBarController的底部,然后按住control键,同时拖向第三个View。在弹出的选项中,选择Relationship segue的viewControllers。这样会在TabBarController的底部生成第三个图标。
3. 一级页面加上title栏
此时三个view的上方是没有标题栏的。需要前置一个navigation.选中一个view.然后选择菜单Editor->Embedin->navigation controller。生成下面这种布局。
4. 添加图标。选择Navigation Controller下方的空白图标,在attributes inspector中设置tab名称和图标。
5. 一级页面跳转到二级页面时,显示二级页面的bottomBar
在一级页面设置一个button,让它指向一个二级页面,默认情况下,tabBar是不会消失的。如果二级页面也有一个bottomBar需要显示,这时可以勾选二级页面的hides Bottom Bar onpush选项。
或者用代码实现。在二级页面关联的viewController.m中加入方法(viewDidAppear,view生命周期方法),
-(void)viewDidAppear:(BOOL)animated{
self.tabBarController.tabBar.hidden=YES;
}
同时在那个一级页面关联的viewController.m中加入方法
-(void)viewDidAppear:(BOOL)animated{
self.tabBarController.tabBar.hidden=NO;
}
6. 识别点击了哪一个tab
新建一个UITabBarController,与tabBarViewController关联,然后在实现中加入方法
-(void)tabBar:(UITabBar *)tabBardidSelectItem:(UITabBarItem *)item{
if (item == [self.tabBar.items objectAtIndex:0]){
NSLog(@"item0 is selected");
}else if (item == [self.tabBar.items objectAtIndex:1]){
NSLog(@"item1 is selected");
} else if (item == [self.tabBar.items objectAtIndex:2]){
NSLog(@"item2 is selected");
}
}
7. 显示小角标
此外UITabBarItem还有一个属性badgeValue,通过设置该属性可以在其右上角显示一个小的角标,通常用于提示用户有新的消息,使用很简单。
在对应的TabView中实现以下语句即可。
self.navigationController.tabBarItem.badgeValue=@"5";
如果没有前置的naviegationController.就直接调用self.tabBarItem.badgeValue=@"5";