Pregunta

Tengo una aplicación navigationController.

Presiono una barra de pestañas en la vista. Las pestañas de trabajo están cambiando el título, perfecto. Ahora una de mis pestañas tiene una lista e intento enlazar a una página secundaria dentro de la barra de pestañas:

NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];

No pasa nada. Curso esto funciona:

self.view = nextController.view;

Quiero poder ingresar a esta subpágina dentro de mi barra de pestañas Y cambiar los botones de las barras de navegación. ¿Es esto posible?

¿Fue útil?

Solución

Parece que estás presionando un UITabBarController en un UINavigationController ? De documentación de Apple , no puede insertar un controlador de barra de pestañas en un controlador de navegación.

Lo que probablemente quieras hacer es lo contrario: tener un controlador de barra de pestañas con UINavigationController como elementos de pestaña. Esto es similar a la interfaz en, digamos la aplicación iPod o la aplicación Phone.

Otros consejos

Estoy de acuerdo con Alex: un TabBarController dentro de un controlador de navegación no parece un buen patrón de interfaz de usuario.

De todos modos, para responder a su pregunta: ¿Ha intentado acceder al controlador de navegación a través del controlador de la barra de pestañas?

self.tabBarController.navigationController

No estoy seguro de si esto funciona, pero puedes intentarlo.

Creo que encontré una solución fácil.

En su clase en la que desea insertar una vista, declare un UINavigationController local como una propiedad:

@interface userMenu : UIViewController  {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;

Recuerda sintetizarlo.

En su clase para el tabBarController :

NSArray *viewControllersArray = [self.tabBarController viewControllers];

userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;

Después de eso, puedes hacer [self.navigationController pushViewController: nextController animated: YES];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top