EnamelPot

自律在于今天和明天之间

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

UITabBarController的结构

1.创建一个UITabBarController

UITabBarController通常作为rootViewController,且不能添加到别的container viewController中。最常见的创建UITabBarController的地方就是在application delegate中的applicationDidFinishLaunching:方法中。

//1.创建一个UITabBarController对象(这个自建类继承子UITabBarController)
RootViewController *tabView=[RootViewController new];
//2.创建tabbarcontroller中每一个tab对应的要显示的对象
UIViewController *fVC=[[UIViewController alloc]initWithNibName:nil bundle:nil];
fVC.title=@"FristVC";
UIViewController *sVC=[[UIViewController alloc]initWithNibName:nil bundle:nil];
sVC.title=@"secondeVC";
//3.以数组第形式将vc加载到viewControllers中
tabView.viewControllers=[NSArray arrayWithObjects:fVC,sVC, nil];
//4.加载到rootview
self.window.rootViewController=tabView;

 

只有当viewControllers里面所有的VC都支持该方向的旋转,当前页面才会旋转。 

2.设置UITabBarItem

UITabBar上面每一个Tab都对应着一个ViewController,设置该viewcontroller的tabBarItem属性来改变tabbar上对应的tab显示内容。如没有设置,系统将会根据viewController的title自动创建一个,该tabBarItem只有文字,没有图像。当我们自己创建UITabBarItem的时候,我们可以指定显示的图像和对应的文字。

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"AAAAAAA" image:nil tag:1];
//设置2种状态的图标
[item setFinishedSelectedImage:[UIImage imageNamed:@"second.png"]
  withFinishedUnselectedImage:[UIImage imageNamed:@"first.png"]];
//设置类似新消息提示的红圈 item.badgeValue=@"1";
self.tabBarItem = item;

 

最多可以同时显示4个图标,过超过4个,会出现一个more的图标(具体可以看自带的ipod程序),点击这个按钮出现一个navigationViewController的导航页面,里面是table,列出所有未显示的items,右上角是一个编辑按钮,点进去可以进行所有的items排序,可以通过设置UITabBarController的customizableViewControllers属性(注意也是NSArray)指定一个子集,只有这一部分v的iewControllers是可以放到tabBar中显示的。但每当UITabBarController的viewControllers属性发生变化的时候,customizableViewControllers就会自动设置成跟viewControllers一致,即默认的所有的viewController都是可以编辑的,如果我们要始终限制只是某一部分可编辑的话,在每次viewControlles发生改变的时候,重新设置一次customizableViewControllers。

3.tab切换

a.按tabBarItem切换

b.不按tabBarItem也可以进行tab切换,有3 属性控制(注意属性可set可get)

  • selectedIndex属性(NSInteger)唯一问题是more没办法选中,get的话返回NSNotFound,超出序列会忽略。
  • selectedViewController属性(UIViewController)
  • viewControllers属性   整个都更新了,当然当前vc也会变化,会先找最后一次的vc是否存在,没有,按最后一次的index,如果也没有,就显示新序列里面的。

4.UITabBarControllerDelegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

该方法用于控制TabBarItem能不能选中,返回NO,将禁止用户点击某一个TabBarItem被选中。但是程序内部还是可以通过直接setSelectedIndex选中该TabBarItem。

- (void)tabBarController:UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers;

- (void)tabBarController:UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;

- (void)tabBarController:UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;

 

这三个方法主要用于监测对moreViewController中对view controller的edit操作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2013-12-09 16:22  EnamelPot  阅读(375)  评论(0)    收藏  举报