In my application, i have added UITabBarController
in "Storyborad".
But now i want to add UITabBarItem
programmatically. Let's say there are 5 buttons and when ever user click on that button my UITabBarController
is called.
There are total 5 tab in "tabbar".
e.g:
Tab name:item1,item2,item3,item4,item5.
Button name:item1,item2,item3,item4,item5.
Let's say user click on item1 button, UITabBarcontroller
is called. Now user should not be able to see that item1 tab in "tabbarcontroller", he should be able to see the reset "tabBaritem".
Can anyone help me out with this?
How to do it programmatically?
Thanks.
Nilesh J
To call tabBar click event you need to do the following:
call delegate
method on UITabBarDelegate
and implement their method:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
//self.tabBarItem.title = @"Title";
}
UITabBarItem * itemNew = [[UITabBarItem alloc] initWithTitle:@"Page 1"
image:[UIImage imageNamed:@"page1_image_normal"]
selectedImage:[UIImage imageNamed:@"page1_image_selected"]];
Get existing 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];
Swift 4
if var controllers = tabBarController?.viewControllers {
let tabItem = UITabBarItem(title: "Item \(controllers.count)", image: nil, selectedImage: nil)
let vc = UIViewController() // your new view controller
vc.tabBarItem = tabItem
controllers.append(vc) // or insert at index up to you
tabBarController?.setViewControllers(controllers, animated: true)
}
This is for Custom Tabbar Controller. In this code you can give your Tabbar Button Image and when you click one Button that buttom will be changed according to your image.
Set Delegate Method for 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]];
}
}