用代码创建UITabBarController

原创 2013年09月08日 16:44:39

文章目的

如何用纯代码的方式创建UITabBarController

方法


1. 首先开启XCode并建立一个Empty Application



2. 加入一个Objective-C Class并继承自UIViewController,取名为FirstViewController

3. 重复一次上面动作,并取名为SecondViewController


4. 之后可在工程中看到此图

5. 开启AppDelegate.h,并加入如下代码

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    UITabBarController* tabBarViewController;
}

@property (strong, nonatomic) UIWindow *window;

@end

6. 开启AppDelegate.m,并加入如下代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    tabBarViewController = [[UITabBarController alloc]init];
    [self.window setRootViewController:tabBarViewController];
    
    FirstViewController* first = [[FirstViewController alloc]init];
    SecondViewController* second = [[SecondViewController alloc]init];
    tabBarViewController.viewControllers = [NSArray arrayWithObjects:first, second, nil];
    [first release];
    [second release];
}

    tabBarViewController = [[UITabBarController alloc]init];
    [self.window setRootViewController:tabBarViewController];
第一行代码为初始一个UITabBarController

第二行为将tabBarViewController设定为window的root view controller(根视图控制器)


tabBarViewController.viewControllers = [NSArray arrayWithObjects:first, second, nil];
接下来利用UITabBarController的viewControllers属性,设定First及Second两个控制器。

7.用代码修改TabBar与TabBarItem

UITabBar *tabBar = tabBarViewController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarController提供一个tabBar属性,我们可以透过这个属性取得UITabBar

并在UITabBar的items属性取得所有的UITabBarItem


tabBarItem1.title = @"Home";
tabBarItem2.title = @"Maps";
透过UITabBarItem的title属性,可以设定tab bar item上显示的文字

[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"home_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home.png"]];
[tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"maps_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"maps.png"]];

- (void)setFinishedSelectedImage:(UIImage *)selectedImage withFinishedUnselectedImage:(UIImage *)unselectedImage
这是UITabBarItem提供的方法,可以设定上面所显示的图片,selectedImage是只目前选择并显示的TabBatItem显示的图片

unselectedImage则是平常未选中时显示的图片


UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
这段代码可以修改UITabBar显示的背景图

[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"tabbar_selected.png"]];
这可以设定选中的UITabBarItem后面的图

UIColor *titleHighlightedColor = [UIColor colorWithRed:153/255.0 green:192/255.0 blue:48/255.0 alpha:1.0];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       titleHighlightedColor, UITextAttributeTextColor,
                                                       nil] forState:UIControlStateHighlighted];

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state
这个方法可以设定显示文字的属性,在这段代码中,是设定为显示文字的颜色





范例下载


其他参考

poolo的tabbar超过五个,如何修改more

利用系统自带的UITabBarController纯代码搭建TabBar

1.创建UITabBarController文件,例如夜宵App的TabBar,文件名定义为YeXiaoTabBarController 2.创建完成后,在.m文件的viewDidLoad方法中写入以...
  • Crazy_SunShine
  • Crazy_SunShine
  • 2016年03月05日 13:39
  • 975

UITabBarController和UINavigationController的整合使用

好多项目都同时用到了UITabBarController和UINavigationController,XCode可以直接创建这两个控制器中的其中一个,但是要一起用的话就得稍微麻烦点。层级关系首先得搞...
  • hwe_xc
  • hwe_xc
  • 2016年01月27日 15:38
  • 9334

自定义TabBarController添加跳转控制器并且进行封装(根据自定义TabBar)

1>自定义TabBarController 2>对选择子控制器进行包装 3>封装代码 4>并且实现自动切换...
  • ZZ_IOSdeveloper
  • ZZ_IOSdeveloper
  • 2015年10月31日 12:02
  • 1005

【iOS】自定义TabBarController

一、自定义的思路 iOS中的TabBarController确实已经很强大了,大部分主流iOS应用都会采用。但是往往也不能满足全部的需求,因此需要自定义TabBar,自定义需要对系统的TabBar工作...
  • xn4545945
  • xn4545945
  • 2014年06月30日 14:53
  • 47874

自定义UITabBarController、UITabBar和UIButton

通常情况下,在实际开发过程中经常需要自定义UITabBarController,并且很有可能还涉及到自定义UITabBar和UIButton的情况。就以闲鱼为例,我们尝试着模仿一下它。  为了更好的演...
  • Enrica_Shi
  • Enrica_Shi
  • 2017年10月14日 09:06
  • 219

iOS 自定义TabBarController

转自:http://blog.csdn.net/xn4545945/article/details/35994863
  • gf771115
  • gf771115
  • 2014年07月17日 00:26
  • 55051

iOS - 程序设计之完全自定义tabBarController

首先创建UINavigationController的基类HBNavigationController 在基类中实现方法 - (void)pushViewController:(UIViewContr...
  • alex_birdlion
  • alex_birdlion
  • 2016年10月24日 16:34
  • 134

[iOS]系统UITabBarController详解及自定义

对于UITabBarController, 大家都不陌生, 但是有时候又不那么的熟悉, 下面就来再认识一下这个熟悉的陌生人....
  • lqq200912408
  • lqq200912408
  • 2016年12月17日 16:59
  • 2039

UITabBarController中自定义UITabBar

1.创建多个视图控制器,放如UITabBarControllerzhong    AViewController *aa = [[AViewController alloc] init]; ...
  • daiyelang
  • daiyelang
  • 2014年02月21日 09:27
  • 20068

自定义UITabbarController及向UITabBar中添加自定义按钮

在某些项目的初期我们经常会选择使用UITabbarController或者是UINavigationController或者是两者的结合,经常需要自定义自己需要的类,本文讲述了自定义UITabbarC...
  • wu948327362
  • wu948327362
  • 2016年05月15日 21:12
  • 4553
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用代码创建UITabBarController
举报原因:
原因补充:

(最多只允许输入30个字)