首先,我们需要一些视图,如创建UIControllerView类型的view1,view2,view3.
然后,我们需要创建 一个UITabBarController类型的实例tabBarView,然后我们将刚刚创建的View1,view2,view3添加到tabBarView中的viewcontroller这个数组中。
我们就完成了一个UITabBarController的创建
注意,一般这个TabBarControler是在appdelegate文件中创建的。因为这个TabBarController是作为我们根视图控制器使用的。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSArray *colorArray = [[NSArray alloc] initWithObjects:[UIColor redColor], [UIColor blueColor], [UIColor greenColor], [UIColor blackColor], nil]; self.TabBarCV = [[UITabBarController alloc] init]; self.View = [[NSMutableArray alloc] init]; self.TabBarCV.delegate = self; for (int i = 0; i < [colorArray count]; i++) { ViewController *view = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; [view.view setBackgroundColor:[colorArray objectAtIndex:i]]; view.title = [NSString stringWithFormat: @"%dst", i]; [self.View addObject:view]; } self.TabBarCV.viewControllers = self.View; self.TabBarCV.customizableViewControllers = self.View; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.rootViewController = self.TabBarCV; [self.window makeKeyAndVisible]; return YES; }效果图如下:
self.TabBarCV.viewControllers = self.View; self.TabBarCV.customizableViewControllers = self.View;
这个方法可以创建多个view,如果view多于5个,那么左边会出现这个more的按钮,点击more,现实多余无法显示的界面。
下面那个方法就是设置允许我们editor(编辑)的view的,在这个customizableViewControllers的View,都是可以在more这个Navigation中编辑的。
[self.TabBarCV addChildViewController:view];
这个方法和上面的方法一样。但是使用这个方法就只能最多添加5个View。
BarController *controller5 = [[BarController alloc] initWithNibName:nil bundle:nil]; controller5.tabBarItem = [[UITabBarItem alloc] initWithTitle:[self.titleArray objectAtIndex:i] image:[UIImage imageNamed:@"Ellipse 1"] selectedImage:[UIImage imageNamed:@"Ellipse 1"]];
[controller2.tabBarItem setTitle:@"test"]; [controller2.tabBarItem setSelectedImage:[UIImage imageNamed:@"Ellipse 1"]]; [controller2.tabBarItem setImage:[UIImage imageNamed:@"Ellipse 1"]];效果图如下:
[self.tabBarController setSelectedIndex:2]; [self.tabBarController setSelectedViewController:[self.tabBarController.viewControllers objectAtIndex:2]];
我们在编写TabBarControlerView的时候,我们可以调用协议里面的一些方法,下面是协议里面的方法的介绍:
首先:我们要调用协议里面的方法,我们需要在响应的类里面遵循UITabBarControllerDelegate协议:
然后,我们要将自己的tabBarController和代理关联起来,self.tabBarController.delegate = self;
协议中主要调用的方法有:
//这个方法在我们选中tabBar的时候调用。 -(BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewControlle //这个方法在点击的时候调用 -(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController //下面三个方法在点击more左上角的edited的时候调用 -(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{ //其中,第一个方法在编辑tabBarItem的界面即将弹出的时候调用 //第二个方法在即将结束编辑tabBarItem的时候调用。里面的参数:view controller为tabBar Item 中的View和他们相关的位置;changed显示这个tabBarController中的item的位置有没有改变。 //第三个方法在结束编辑tabBar Item 的时候调用。参数和第二个方法一样。
原文地址:http://blog.csdn.net/daiyibo123/article/details/44339591