Agregue un controller de barra de tabs mediante progtwigción al flujo de aplicaciones actual

Quiero agregar un controller de barra de tabs a mi Flujo de aplicaciones actual. Actualmente tengo una página con un button que onclick abre un nuevo controller de vista con una vista web donde el usuario inicia session y después de iniciar session quiero llevarlo a su página de inicio donde la barra de navigation tiene su nombre y un button de salir a la derecha . La página de inicio también debe tener una barra de tabs con 3 tabs diferentes. Puedo cargar la vista de página de inicio desde la vista web y get la barra de navigation. Pero no puedo agregar el tabBar y hacerlo funcionar. Estoy confundido en cuanto a dónde agregar el código para agregar TabBar. Estoy usando el siguiente código para agregar la barra de tabs:

UITabBarController *tabBar = [[UITabBarController alloc] init]; HomeViewController *home = [[PPHomeViewController alloc] initWithUserName:[self.userInfo objectForKey:@"name"] Email:[self.userInfo objectForKey:@"email"] Phone:[self.userInfo objectForKey:@"phone_number"]]; home.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1]; UINavigationController *homeNavController = [[UINavigationController alloc]initWithRootViewController:home]; RequestViewController *req = [[RequestMoneyViewController alloc]init]; req.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2]; UINavigationController *reqNavController = [[UINavigationController alloc]initWithRootViewController:req]; UIViewController *thirdViewController = [[UIViewController alloc]init]; thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:3]; UINavigationController *thirdNavController = [[UINavigationController alloc]initWithRootViewController:thirdViewController]; UIViewController *fourthViewController = [[UIViewController alloc]init]; thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:3]; UINavigationController *fourthNavController = [[UINavigationController alloc]initWithRootViewController:fourthViewController]; tabBar.viewControllers = [[NSArray alloc] initWithObjects:homeNavController, reqNavController, thirdNavController, fourthNavController, nil]; tabBar.delegate=self; tabBar.selectedIndex=0; UIImageView *homeImg=[[UIImageView alloc]initWithFrame:CGRectMake(0, 432, 80, 49)]; homeImg.tag=11; homeImg.image=[UIImage imageNamed:@"footer"]; UIImageView *reqImg=[[UIImageView alloc]initWithFrame:CGRectMake(81, 432,80, 49)]; reqImg.tag=12; reqImg.image=[UIImage imageNamed:@"footer"]; UIImageView *sendImg=[[UIImageView alloc]initWithFrame:CGRectMake(162, 432,80, 49)]; sendImg.tag=13; sendImg.image=[UIImage imageNamed:@"footer"]; UIImageView *localImg=[[UIImageView alloc]initWithFrame:CGRectMake(243, 432, 80, 49)]; localImg.tag=14; localImg.image=[UIImage imageNamed:@"footer"]; [tabBar.view addSubview:homeImg]; [tabBar.view addSubview:reqImg]; [tabBar.view addSubview:sendImg]; [tabBar.view addSubview:localImg]; [[[UIApplication shanetworkingApplication]keyWindow]addSubview:tabBar.view]; 

Actualmente, he puesto el código anterior en la vistaDidLoad de un ViewController TabViewController que extiende UITabBarController. En mi controller webView, he puesto el siguiente código:

 TabViewController *tab=[[TabViewController alloc] init]; tab.userInfo=userInfo; [self presentViewController:tab animated:YES completion:nil]; 

Pero la aplicación se bloquea tan pronto como hago clic en cualquier otra pestaña que no esté abierta. Por favor ayuda.

La forma en que lo hice en el pasado es crear una subclass UITabBarController que contenga todo el código de creación de tabBar que tiene arriba.

Luego use su UINavigationController para empujar la subclass tabBar a la pantalla.

Aquí hay una muestra de mi subclass UITabBarController :

 - (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]; } 

Establecer Delegado UITabBarDelegate

aquí 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; } }