一、手动创建UITabBarController

  最常见的创建UITabBarController的地方就是在application delegate中的 applicationDidFinishLaunching:方法,因为UITabBarController通常是作为整个程序的rootViewController的,我们需要在程序的window显示之前就创建好它,具体步骤如下:

  1、创建一个UITabBarController对象

  2、创建tabbarcontroller中每一个tab对应的要显示的对象

  3、通过UITabBarController的viewController属性将要显示的所有content viewcontroller添加到UITabBarController中

  4、通过设置UITabBarController对象为window.rootViewController,然后显示window

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
  4. // Override point for customization after application launch.
  5.  
  6.    SvTabBarFirstViewController *viewController1, *viewController2;
  7.  
  8. viewController1 = [[SvTabBarFirstViewController alloc] initWithNibName:nil bundle:nil];
  9. viewController1.title = @"First";
  10.  
  11. viewController2 = [[SvTabBarFirstViewController alloc] initWithNibName:nil bundle:nil];
  12. viewController2.title = @"Second";
  13.  
  14. self.tabBarController = [[[UITabBarController alloc] init] autorelease];
  15. self.tabBarController.delegate = self;
  16. self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
  17.  
  18. [viewController1 release];
  19. [viewController2 release];
  20.  
  21. self.window.rootViewController = self.tabBarController;
  22. [self.window makeKeyAndVisible];
  23.  
  24. return YES;
  25. }

二。属性

  

@property(nonatomic,copy) NSArray *viewControllers;//视图控制器的集合

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated;//控制视图控制器是否显示动画

@property(nonatomic,assign) UIViewController *selectedViewController;//选中的当前视图控制器

@property(nonatomic) NSUInteger selectedIndex;//当前控制器的索引

@property(nonatomic,readonly) UINavigationController *moreNavigationController;

UITabBar上最多可以显示5个Tab,当我们往UITabBarController中添加超过的viewController超过5个时候,最后一个一个就会自动变成,按照设置的viewControlles的顺序,显示前四个viewController的tabBarItem,后面的tabBarItem将不再显示。当点击more时候将会弹出一个标准的navigationViewController,里面放有其它未显示的的viewController,并且带有一个edit按钮,通过点击该按钮可以进入类似与ipod程序中设置tabBar的编辑界面。编辑界面中默认所有的viewController都是可以编辑的,我们可以通过设置UITabBarController的customizableViewControllers属性来指定viewControllers的一个子集,即只允许一部分viewController是可以放到tabBar中显示的。但是这块儿要注意一个问题就是每当UITabBarController的viewControllers属性发生变化的时候,customizableViewControllers就会自动设置成跟viewControllers一致,即默认的所有的viewController都是可以编辑的,如果我们要始终限制只是某一部分可编辑的话,记得在每次viewControlles发生改变的时候,重新设置一次customizableViewControllers。

@property(nonatomic,copy) NSArray *customizableViewControllers;

@property(nonatomic,readonly) UITabBar *tabBar NS_AVAILABLE_IOS(3_0);//UITabBar是最下面的导航    UITabBar自己有一些方法是可以改变自身状态,但是对于UITabBarController自带的tabBar,我们不能直接去修改其状态。任何直接修改tabBar的操作将会抛出异常,下面看一个抛出异常的小例子

@property(nonatomic,assign) id<UITabBarControllerDelegate> delegate;委托

旋转 ;当所有的viewcontry都允许旋转UITabBarController才允许旋转

三。继承

四。声明周期

tabbedApliction的更多相关文章

随机推荐

  1. trangleProble switch方法 java

    public class trangleProblem { static int res=1; int codePart=1; int n=100; Stack<Param> stack= ...

  2. oracle数据块的大小

    标准数据块用于临时表空间和系统表空间,同时也是一个表空间数据块的默认值.标准数据块的大小是在创建数据库时由参数DB_BLOCK_SIZE确定的.若要改变这一设置必须重建数据库. DB_CACHE_SI ...

  3. css多行文本居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Control character in cookie value, consider BASE64 encoding your value-Cookie保存中文出错[转]

    项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概 ...

  5. 转载:EntityFramework 6.0< Code First > 连接 Mysql数据库

    转载自:http://blog.csdn.net/kmguo/article/details/19650299 网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转 ...

  6. thinkphp框架开启页面gzip压缩

    Thinkphp下开启gzip压缩很简单,不管你是哪个版本,只要在你的入口文件index.PHP中加入以下两行,如果你的服务器支持,那么就OK了. define ( "GZIP_ENABLE ...

  7. Square Coins(母函数)

    Square Coins 点我 Problem Description People in Silverland use square coins. Not only they have square ...

  8. 调用Windows属性窗口(居然是通过注册表来调用的)

    简述 在Windows系统下.可以通过:右键 -> 属性,来查看文件/文件夹对应的属性信息,包括:常规.安全.详细信息等. 简述 共有类型 共有类型 首先,需要包含头文件: #include & ...

  9. C#多显示器转换的两种方法——SetWindowPos,Screen

    原文 http://blog.csdn.net/hejialin666/article/details/6057551 实现多屏显示目的:一般情况下是一个电脑显示屏,外接一个电视显示屏.在电脑上显示的 ...

  10. (三)Boost库之字符串处理

    (三)Boost库之字符串处理 字符串处理一直是c/c++的弱项,string_algo库很好的弥补了这一点. string_algo 库算法命名规则: 前缀i    : 有这个前缀表名算法的大小写不 ...