Agregar un TabBarController mediante progtwigción

Quiero hacer un controller de barra de tabs y un controller de navigation mediante progtwigción. Mi código funciona hasta ahora y muestra una barra de tabs en la parte inferior, pero OptionViewController no dice nada (sin título) en el button de la segunda barra de tabs. Lo curioso es que cuando hago clic en el button sin que aparezca nada en él, aparece el título (y su opinión también), ¿alguien me puede explicar lo que estoy haciendo mal? Intenté usar el siguiente código:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self.window makeKeyAndVisible]; NSMutableArray *tabItems = [[NSMutableArray alloc] initWithCapacity:2]; DefaultViewController *dvc = [[DefaultViewController alloc] init]; UINavigationController *dvc_nc = [[UINavigationController alloc] initWithRootViewController:dvc]; [tabItems addObject:dvc_nc]; [dvc release]; [dvc_nc release]; OptionsViewController *ovc = [[OptionsViewController alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *ovc_nc = [[UINavigationController alloc] initWithRootViewController:ovc]; [tabItems addObject:ovc_nc]; [ovc release]; [ovc_nc release]; UITabBarController *tbc = [[UITabBarController alloc] init]; tbc.viewControllers = tabItems; self.tabController = tbc; [tabItems release]; [tbc release]; [self.window addSubview:self.tabController.view]; return YES; } 

Debe establecer el tabBarItem y el título del UINavigationController y no su root viewController.

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self.window makeKeyAndVisible]; NSMutableArray *tabItems = [[NSMutableArray alloc] initWithCapacity:2]; DefaultViewController *dvc = [[DefaultViewController alloc] init]; UINavigationController *dvc_nc = [[UINavigationController alloc] initWithRootViewController:dvc]; dvc_nc.tabBarItem.title = @"Default"; dvc_nc.tabBarItem.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Default" ofType:@"png"]]; [tabItems addObject:dvc_nc]; [dvc release]; [dvc_nc release]; OptionsViewController *ovc = [[OptionsViewController alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *ovc_nc = [[UINavigationController alloc] initWithRootViewController:ovc]; ovc_nc.tabBarItem.title = @"Option" ovc_nc.tabBarItem.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Optiomn" ofType:@"png"]]; [tabItems addObject:ovc_nc]; [ovc release]; [ovc_nc release]; UITabBarController *tbc = [[UITabBarController alloc] init]; tbc.viewControllers = tabItems; self.tabController = tbc; [tabItems release]; [tbc release]; [self.window addSubview:self.tabController.view]; return YES; } 

UITabbarController el UITabbarController como controller rooview de la aplicación con UINavigationController para UIViewController.

aquí un ejemplo más: utilicé xibs para View Controllers.

AppDelegate.m

Creo un nombre de método: setupAppHome

 #pragma mark - SETUP HOME -(void) setupAppHome{ NSLog(@"set up the nano home"); self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; if (_chatViewController == nil) { _chatViewController = [[ChatViewController alloc] initWithNibName:@"ChatViewController" bundle:nil]; chatNav = [[UINavigationController alloc] initWithRootViewController:_chatViewController]; chatNav.tabBarItem.title=@"Chat"; chatNav.tabBarItem.image=[UIImage imageNamed:@"chat_icon.png"]; } if (_callController == nil) { _callController = [[CallViewController alloc] initWithNibName:@"CallViewController" bundle:nil]; callNav = [[UINavigationController alloc] initWithRootViewController:_callController]; callNav.tabBarItem.title=@"Call"; callNav.tabBarItem.image=[UIImage imageNamed:@"call_icon.png"]; } if (_contanctsController == nil) { _contanctsController = [[ContactsViewController alloc] initWithNibName:@"ContactsViewController" bundle:nil]; conNav = [[UINavigationController alloc] initWithRootViewController:_contanctsController]; conNav.tabBarItem.title=@"Contact"; conNav.tabBarItem.image=[UIImage imageNamed:@"contact_icon.png"]; } if (_settingController == nil) { _settingController = [[SettingViewController alloc] initWithNibName:@"SettingViewController" bundle:nil]; settingNav = [[UINavigationController alloc] initWithRootViewController:_settingController]; settingNav.tabBarItem.title=@"Setting"; settingNav.tabBarItem.image=[UIImage imageNamed:@"setting_icon.png"]; } self.tabController = [[UITabBarController alloc] init]; NSMutableArray *controllers = [[NSMutableArray alloc] initWithCapacity:4]; [controllers addObject:chatNav]; [controllers addObject:callNav]; [controllers addObject:conNav]; [controllers addObject:settingNav]; self.tabController.viewControllers = controllers;//@[chatNav,callNav,conNav,settingNav]; self.tabController.selectedIndex=0; [self.window setRootViewController:self.tabController]; [self.window makeKeyAndVisible]; } 

Se envía un post de text en Xcode 9 con iOS 11.

Si alguien necesita una versión de SWIFT. Esto funcionó para mí. Gracias a @rckoenes por la respuesta objC que utilicé para traducir esto.

  window?.makeKeyAndVisible() let dvc = HomeViewController() let dvc_nc = UINavigationController(rootViewController: dvc) dvc_nc.tabBarItem.title = "Home" dvc_nc.tabBarItem.image = UIImage(named: "HomeIcon") controllers.append(dvc_nc) let ovc = ProfileViewController() let ovc_nc = UINavigationController(rootViewController: ovc) ovc_nc.tabBarItem.title = "Profile" ovc_nc.tabBarItem.image = UIImage(named: "ProfileIcon") controllers.append(ovc_nc) let tbc = UITabBarController() tbc.viewControllers = controllers window?.rootViewController = tbc UINavigationBar.appearance().tintColor = UIColor(networking: 0.05, green: 0.47, blue: 0.91, alpha: 1.0) UINavigationBar.appearance().barTintColor = UIColor(networking: 0.05, green: 0.47, blue: 0.91, alpha: 1.0) UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] UIApplication.shanetworkingApplication().statusBarStyle = UIStatusBarStyle.LightContent