2014-05-15 95 views
3

在我的应用程序中,我在“Storyborad”中添加了UITabBarController。 但现在我想以编程方式添加UITabBarItem。假设有5个按钮,当用户点击该按钮时,我的UITabBarController被调用。 “tabbar”中共有5个选项卡。 例如:如何以编程方式添加UITabBarItem?

标签名称:item1,item2,item3,item4,item5。 按钮名称:item1,item2,item3,item4,item5。

假设用户点击item1按钮,调用UITabBarcontroller。现在用户应该无法看到“tabbarcontroller”中的item1选项卡,他应该能够看到重置“tabBaritem”。

任何人都可以帮我解决这个问题吗? 如何以编程方式执行此操作?

谢谢。

Nilesh制作Ĵ

回答

0

要调用的TabBar点击事件,你需要做到以下几点:

通话delegate方法上UITabBarDelegate并实现他们的方法:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    //self.tabBarItem.title = @"Title"; 
} 
0
UITabBarItem * itemNew = [[UITabBarItem alloc] initWithTitle:@"Page 1" 
                image:[UIImage imageNamed:@"page1_image_normal"] 
              selectedImage:[UIImage imageNamed:@"page1_image_selected"]]; 

获取现有tabBarItems

NSMutableArray *tbItems = [NSMutableArray arrayWithArray:[self.tabBar items]]; 
//Add your new tabBarItem 
[tbItems addObject:itemNew]; 

//Set your tabBar items to the new array 
[self.tabBar setItems:tbItems]; 
0

这是自定义标签栏控制器。在这段代码中,你可以给你的Tabbar按钮图像,当你点击一个按钮时,按钮会根据你的图像改变按钮。

设置的委托方法为UITabBarControllerDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    [self creationTabBar]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

-(void)creationTabBar 
{ 
UINavigationController *myNavigationController; 

// Create initialized instance of UITabBarController 

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 

tabBarController.view.frame = CGRectMake(0, 0, self.window.bounds.size.width, self.window.bounds.size.height); 

// Create initialized instance of NSMutableArray to hold our UINavigationControllers 

NSMutableArray *tabs = [[NSMutableArray alloc] init]; 

World_ViewController *WorldScreen; 
Home_ViewController *HomeScreen; 
Favourite_ViewController *FavouriteScreen; 
Rank_ViewController *RankScreen; 
Setting_ViewController *SettingScreen; 


UILabel *item1, *item2, *item3, *item4, *item5; 

// Create first UIViewController 

WorldScreen = [[World_ViewController alloc] initWithNibName:@"World_ViewController" bundle:nil]; 
HomeScreen = [[Home_ViewController alloc] initWithNibName:@"Home_ViewController" bundle:nil]; 
FavouriteScreen= [[Favourite_ViewController alloc] initWithNibName:@"Favourite_ViewController" bundle:nil]; 
RankScreen = [[Rank_ViewController alloc] initWithNibName:@"Rank_ViewController" bundle:nil]; 
SettingScreen = [[Setting_ViewController alloc] initWithNibName:@"Setting_ViewController" bundle:nil]; 

myNavigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 

item1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 430, 64, 50)]; 
item2 = [[UILabel alloc] initWithFrame:CGRectMake(64, 430, 64, 50)]; 
item3 = [[UILabel alloc] initWithFrame:CGRectMake(128, 430, 64, 50)]; 
item4 = [[UILabel alloc] initWithFrame:CGRectMake(195, 430, 64, 50)]; 
item5 = [[UILabel alloc] initWithFrame:CGRectMake(256, 430, 64, 50)]; 


myNavigationController = [[UINavigationController alloc] initWithRootViewController:HomeScreen]; 
[myNavigationController setNavigationBarHidden:YES]; 
[tabs addObject:myNavigationController]; 

myNavigationController = [[UINavigationController alloc] initWithRootViewController:WorldScreen]; 
[myNavigationController setNavigationBarHidden:YES]; 
[tabs addObject:myNavigationController]; 

myNavigationController = [[UINavigationController alloc] initWithRootViewController:FavouriteScreen]; 
[myNavigationController setNavigationBarHidden:YES]; 
[tabs addObject:myNavigationController]; 

myNavigationController = [[UINavigationController alloc] initWithRootViewController:RankScreen]; 
[myNavigationController setNavigationBarHidden:YES]; 
[tabs addObject:myNavigationController]; 

myNavigationController = [[UINavigationController alloc] initWithRootViewController:SettingScreen]; 
[myNavigationController setNavigationBarHidden:YES]; 
[tabs addObject:myNavigationController]; 


[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tabbar.png"]]; 
[tabBarController setViewControllers:tabs]; 
[tabBarController setDelegate:self]; 

[item1 setText:@"item1"]; 
[item1 setBackgroundColor:[UIColor grayColor]]; 
[tabBarController.view addSubview:item1]; 
item1.tag = 101; 

[item2 setText:@"item2"]; 
[item2 setBackgroundColor:[UIColor grayColor]]; 
[tabBarController.view addSubview:item2]; 
item2.tag = 102; 

[item3 setText:@"item3"]; 
[item3 setBackgroundColor:[UIColor grayColor]]; 
[tabBarController.view addSubview:item3]; 
item3.tag = 103; 

[item4 setText:@"item4"]; 
[item4 setBackgroundColor:[UIColor grayColor]]; 
[tabBarController.view addSubview:item4]; 
item4.tag = 104; 

[item5 setText:@"item5"]; 
[item5 setBackgroundColor:[UIColor grayColor]]; 
[tabBarController.view addSubview:item5]; 
item5.tag = 105; 

[self.window setRootViewController:self.viewController]; 
} 
- (void)tabBarController:(UITabBarController *)tabBarControllerref didSelectViewController:(UIViewController *)viewController 
{ 
UILabel *item1 = (UILabel*)[tabBarControllerref.view viewWithTag:101]; 
UILabel *item2 = (UILabel*)[tabBarControllerref.view viewWithTag:102]; 
UILabel *item3 = (UILabel*)[tabBarControllerref.view viewWithTag:103]; 
UILabel *item4 = (UILabel*)[tabBarControllerref.view viewWithTag:104]; 
UILabel *item5 = (UILabel*)[tabBarControllerref.view viewWithTag:105]; 

[item1 setFrame: CGRectMake(0, 430, 64, 50)]; 
[item2 setFrame: CGRectMake(64, 430, 64, 50)]; 
[item3 setFrame: CGRectMake(128, 430, 64, 50)]; 
[item4 setFrame: CGRectMake(195, 430, 64, 50)]; 
[item5 setFrame: CGRectMake(256, 430, 64, 50)]; 

if([tabBarControllerref selectedIndex] == 0) 
{ 
    [item1 setTextColor:[UIColor redColor]]; 
    [item2 setTextColor:[UIColor greenColor]]; 
    [item3 setTextColor:[UIColor greenColor]]; 
    [item4 setTextColor:[UIColor greenColor]]; 
    [item5 setTextColor:[UIColor greenColor]]; 
} 
else if ([tabBarControllerref selectedIndex] == 1) 
{ 
    [item1 setTextColor:[UIColor greenColor]]; 
    [item2 setTextColor:[UIColor redColor]]; 
    [item3 setTextColor:[UIColor greenColor]]; 
    [item4 setTextColor:[UIColor greenColor]]; 
    [item5 setTextColor:[UIColor greenColor]]; 
} 
else if ([tabBarControllerref selectedIndex] == 2) 
{ 
    [item1 setTextColor:[UIColor greenColor]]; 
    [item2 setTextColor:[UIColor greenColor]]; 
    [item3 setTextColor:[UIColor redColor]]; 
    [item4 setTextColor:[UIColor greenColor]]; 
    [item5 setTextColor:[UIColor greenColor]]; 
} 
else if ([tabBarControllerref selectedIndex] == 3) 
{ 
    [item1 setTextColor:[UIColor greenColor]]; 
    [item2 setTextColor:[UIColor greenColor]]; 
    [item3 setTextColor:[UIColor greenColor]]; 
    [item4 setTextColor:[UIColor redColor]]; 
    [item5 setTextColor:[UIColor greenColor]]; 
} 
else if ([tabBarControllerref selectedIndex] == 4) 
{ 
    [item1 setTextColor:[UIColor greenColor]]; 
    [item2 setTextColor:[UIColor greenColor]]; 
    [item3 setTextColor:[UIColor greenColor]]; 
    [item4 setTextColor:[UIColor greenColor]]; 
    [item5 setTextColor:[UIColor redColor]]; 
} 

}