Controlador de navigation Storyboard y controller de barra de tabs

Estoy intentando get la siguiente configuration en Storyboard.

Guión gráfico

Donde tengo una vista de tabla al principio, y cuando toco una celda, necesita pasar al controller de la barra de tabs, que funciona. Pero ahora quiero un título y un button de barra de navigation adicional en los 2 controlleres más correctos.

Pero parece que no puedo arrastrar un button hacia allí o al configurar el título, no aparece nada. ¿Cómo puedo lograr esta configuration en storyboard?

editar:

Pregunta actualizada, basada en la respuesta a continuación.

Nueva configuración

Cuando tengo esta nueva configuration (por lo tanto, con un controller de navigation adicional entre ellos) puedo establecer el título en el guión gráfico, pero al ejecutar la aplicación, el título agregado no se muestra.

editar: he cargado un proyecto xcode con exactamente esa configuration. Tal vez pueda ser útil.

Para cambiar el título de UINavigationBar (sin necesidad de crear otros 2 UINavigationController ), solo puede usar

 [self.parentViewController.navigationItem setTitle:@"Title"]; 

y para agregar el button derecho use

 self.parentViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(myRightButton)]; 

en el método viewDidLoad para cada UIViewController reference desde su UITabBarController .

Si quieres trabajar con "estructuras de navigation" dentro de tu UIViewController desde TabItems para que puedas editar tu BUFViewController.m a eso:

 #import "BUFViewController.h" @interface BUFViewController () @end @implementation BUFViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.parentViewController.navigationController setNavigationBarHidden:YES]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)]; } -(void)done{ [self.parentViewController.navigationController popToRootViewControllerAnimated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 

UITabBarController pensar que su UITabBarController está dentro de su NavigationController padre, por lo que desea ocultar el UINavigationBar primario y mostrar el suyo. Después de eso, podrá volver a su tabla utilizando popToRootViewControllerAnimated : en el UINavigationController del UINavigationController .

Espero que ayude 🙂

Por si acaso alguien estaba buscando un enfoque rápido:

 tabBarController?.title = "Your Title" tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction") 

El código se coloca mejor en viewDidAppear o viewWillAppear para que el título y el button cambien a medida que se presionan las diferentes tabs.

Tampoco necesitará los controlleres de navigation adicionales con este enfoque.

Miré su aplicación de testing, y veo el título, muy débilmente, debajo de la barra de navigation. Puede ver las dos barras de navigation si selecciona el controller de la barra de tabs y desmarque la casilla "Debajo de las barras superiores". Sin embargo, esto le da una sombra extraña en la barra de navigation. No sé si hay una manera fácil de solucionar esto, pero no creo que esta interfaz de usuario con dos barras de navigation se vea bien de ninguna manera. Es posible que desee eliminar el controller de navigation inicial y utilizar un segue modal para presentar el controller de barra de tabs en su lugar. Puede agregar un elemento de button de barra a los controlleres de navigation que aún tendría que hacer para descartar el controller de vista modal.

UINavigationViewControllers replace esos controlleres de vista con UINavigationViewControllers .

Eliminar los dos controlleres de vista correctos.

Arrastra Drop 2 UINavigationViewControllers en el storyboard y UINavigationViewControllers como quieras.

Luego, debe enganchar esos nuevos controlleres de vista de navigation al controller de la barra de tabs. Ctrl haga clic y arrastre desde el controller de la barra de tabs a los controlleres de navigation. Seleccione "ver controlleres" en la sección "Relación Segue" del menu que aparece. Haga esto para ambos controlleres de navigation.

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"Overview_Register"]) { WDRegisterViewController *obj=(WDRegisterViewController *)[segue destinationViewController]; obj.str_Title=@"Edit Profile"; obj.isRegister=NO; } } [self performSegueWithIdentifier:@"Overview_Measure" sender:nil]; UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; WDPeekViewController *Peek = (WDPeekViewController *)[sb instantiateViewControllerWithIdentifier:@"WDPeekViewController"]; [self.navigationController pushViewController:tabBarController animated:YES];