I recently came across a situation where it was useful to have a UITabBar based application, however the actual tab bar was an unnecessary item on the screen. This post is a mini tutorial on how to make this happen.

UPDATE: A few people have asked for the source code, so here is the project.

Inside “application:didFinishLaunchingWithOptions:” method:

 tabBarController = [[UITabBarController alloc] init]; tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, viewController1, viewController2, nil]; [window addSubview:tabBarController.view]; [self makeTabBarHidden:TRUE]; 

 

 

Here is the “makeTabBarHidden” method:

 -(void)makeTabBarHidden:(BOOL)hide { // Custom code to hide TabBar if ( [tabBarController.view.subviews count] < 2 ) { return; } UIView *contentView; if ( [[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) { contentView = [tabBarController.view.subviews objectAtIndex:1]; } else { contentView = [tabBarController.view.subviews objectAtIndex:0]; } if (hide) { contentView.frame = tabBarController.view.bounds; } else { contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x, tabBarController.view.bounds.origin.y, tabBarController.view.bounds.size.width, tabBarController.view.bounds.size.height - tabBarController.tabBar.frame.size.height); } tabBarController.tabBar.hidden = hide; } 

 

 

And you are probably wondering how to change the views that are normally controlled by the tab bar? Here is the answer…just simply change the selectedIndex property of the tab bar.

 tabBarController.selectedIndex = 1; 

The complete source code for the project.

Part of this code came from a post I found on iPhoneDevSDK.com, so I took it one step further and made it a complete solution.

  • Share/Bookmark