博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITabBarController
阅读量:4611 次
发布时间:2019-06-09

本文共 2797 字,大约阅读时间需要 9 分钟。

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.加载到rootviewself.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 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/EnamelPot/p/3465627.html

你可能感兴趣的文章