Configurar el título de una barra de navigation dentro de un controller de barra de tabs

Bueno, en mi aplicación tengo un controller de navigation con una vista de tabla, y al presionar un button se abre un controller de tabs. En su primera pestaña, quiero que se establezca el título de la barra de navigation.

Aquí hay una image de mi storyboard solo para asegurarte de que nos digamos entre nosotros.

introduzca la descripción de la imagen aquí

Este es mi código que se supone que funciona. Utilicé este código cuando intentaba abrir una sola vista y no un controller de tabs y funcionaba correctamente. Entonces supongo que debo cambiar algo.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]]; myDetViewCont.ski_center = [centers objectAtIndex:indexPath.row]; UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; [[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"SkiCenterIds"] animated:YES]; //[self.navigationController pushViewController:myDetViewCont animated:YES]; // "Pushing the controller on the screen" [myDetViewCont release]; // releasing controller from the memory myDetViewCont = nil; } 

Donde Skicenter es el nombre de la class para mi primera pestaña y SkiCenterIds es el identificador de mi controller de tabs en el guión gráfico.

El código en Skicenter .m es:

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.navigationItem.title = ski_center; } 

pero no veo ningún título. Entonces, ¿qué he hecho mal? También he intentado esto:

 [self.navigationController setTitle:@"Live"]; 

o

 self.title=ski_center; 

ski_center tiene valor porque se imprime normalmente en NSLog.

¡Sencillo!

 [self.tabBarController setTitle:@"Title"]; 

Agregando a la solución de ghostrider, en mytabbarcontroller.m self.navigationItem.title no funcionó para mí. Tengo un NavigationController cuya vista de detalle es un TabController y esto es lo que tengo en la implementación de mi primera pestaña

 self.navigationController.visibleViewController.title = ski_center; 

Ok solo para que sepas, es una mala práctica poner un UITabBarController dentro de un UINavigationController – Apple recomienda para un buen layout de interfaz de usuario que solo debes poner un UINavigationController dentro de un UITabBarController y no al revés. De cualquier manera, debería poder cambiar el título del UITabBarController así;

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [[self.navigationController.viewControllers objectAtIndex:0] setTitle:ski_center]; } 

Eso debería funcionar.

  UITabBarController *tabController = (UITabBarController *)self.parentViewController; tabController.navigationItem.title = @"ABC"; 

Esto esta funcionando para mi

De alguna investigación y desarrollo en internet

Tienes que pasar el elemento de navigation por la cadena. UINavigationController muestra el elemento de navigation belonging to its topViewController que es UITabBarController. UITabBarController muestra los títulos navigationItem en sus tabs. Por lo tanto, lo que debe hacer es asegurarse de que el elemento de navigation tabBarController esté seleccionado browsingController'sItem

Entonces para recapitular:

UINavigationController title = topViewController.navigationItem.title

UITabBarController tabTitle = selectedViewController.navigationItem.title

UIViewController title = navigationItem.title

testing esto:

 [self.navigationController setTitle:@"Live"]; 

Básicamente no sé si lo notaste pero lo conseguí funcionar así:

Le asigné una nueva class a mi controller de barra de tabs.

Hice lo siguiente:

agréguelo a la aplicación delegate.h

 @property (nonatomic,retain) NSString *center; 

agréguelo a mainmap.m

 AppDelegate *delegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; delegate.center=[centers objectAtIndex:indexPath.row]; 

y en mytabbarcontroller.m

  AppDelegate *delegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; ski_center=delegate.center; self.navigationItem.title = ski_center;