Add a Tab Bar Controller Programmatically to current App Flow Add a Tab Bar Controller Programmatically to current App Flow xcode xcode

Add a Tab Bar Controller Programmatically to current App Flow


The way I've done this in the past is to create a UITabBarController subclass that contains all of the tabBar creation code you have above.

Then use your UINavigationController to push the tabBar subclass to the screen.

Here's a sample of my UITabBarController subclass:

- (void)viewDidLoad {    [super viewDidLoad];    UIViewController *view1 = [[UIViewController alloc] init];    UIViewController *view2 = [[UIViewController alloc] init];    UIViewController *view3 = [[UIViewController alloc] init];    NSMutableArray *tabViewControllers = [[NSMutableArray alloc] init];    [tabViewControllers addObject:view1];    [tabViewControllers addObject:view2];    [tabViewControllers addObject:view3];    [self setViewControllers:tabViewControllers];    //can't set this until after its added to the tab bar    view1.tabBarItem =       [[UITabBarItem alloc] initWithTitle:@"view1"                                     image:[UIImage imageNamed:@"view1"]                                       tag:1];    view2.tabBarItem =       [[UITabBarItem alloc] initWithTitle:@"view2"                                     image:[UIImage imageNamed:@"view3"]                                       tag:2];    view3.tabBarItem =       [[UITabBarItem alloc] initWithTitle:@"view3"                                     image:[UIImage imageNamed:@"view3"]                                       tag:3];      }


Set Delegate UITabBarDelegate

here TabBar Viewcontroller image http://prntscr.com/ba5oks

#pragma mark- Tapbar delegate- (void)deselectTabBarItem:(UITabBar*)tabBar{    tabBar.selectedItem = nil;}- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{    [self performSelector:@selector(deselectTabBarItem:) withObject:tabBar afterDelay:0.2];    switch (item.tag) {        case 0:            //perform action            break;        case 1:            //do whatever you want to do.            break;        case 2:            //call method            break;        default:            break;    }}