tab create bar ios uinavigationcontroller storyboard uitabbarcontroller uistoryboard

ios - create - uitabbarcontroller programmatically swift 4



Controlador de navegaciĆ³n Storyboard y controlador de barra de pestaƱas (5)

Miré tu aplicación de prueba, y veo el título, muy débilmente, debajo de la barra de navegación. Puedes ver ambas barras de navegación si seleccionas el controlador de la barra de pestañas y desmarcas la casilla "Debajo de las barras superiores". Sin embargo, esto le da una sombra extraña en la barra de navegación. No sé si hay una manera fácil de arreglar esto, pero no creo que esta interfaz de usuario con dos barras de navegación se vea bien de ninguna manera. Es posible que desee eliminar el controlador de navegación inicial y utilizar un cambio modal para presentar el controlador de la barra de pestañas en su lugar. Podría agregar un elemento de botón de barra a los controladores de navegación, aún tendría que descartar el controlador de vista modal.

Estoy tratando de obtener la siguiente configuración en Storyboard.

Donde tengo una vista de tabla al principio, y cuando toco una celda necesita hacer la transición al controlador de la barra de pestañas, que funciona. Pero ahora quiero un título y un botón de barra de navegación adicional en los 2 controladores más correctos.

Pero parece que no puedo arrastrar un botón hasta allí o cuando establezco el título, no aparece nada. ¿Cómo puedo lograr esta configuración en el guión gráfico?

editar:

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

Cuando tengo esta nueva configuración (por lo tanto, con un controlador de navegación adicional en el medio) puedo configurar el título en el guión gráfico, pero cuando se ejecuta la aplicación, el título agregado no se muestra.

editar: he subido un proyecto xcode con exactamente esa configuración. Tal vez puede ser útil.


UINavigationViewControllers reemplazar esos controladores de vista con UINavigationViewControllers .

Elimine los dos controladores de vista correctos.

Arrastra y suelta 2 UINavigationViewControllers en el guión gráfico y UINavigationViewControllers como quieras.

Luego, debe conectar esos nuevos controladores de vista de navegación al controlador de la barra de pestañas. Mantenga presionada la tecla Ctrl y arrastre desde el controlador de la barra de pestañas hasta los controles de navegación. Seleccione "ver controladores" en la sección "Segue de relación" del menú que aparece. Haga esto para ambos controles de navegación.


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

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

y para agregar el uso del botón derecho

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

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

Si desea trabajar con "estructuras de navegación" dentro de su UIViewController desde TabItems para poder editar su 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

Debes pensar que tu UITabBarController está dentro de tu NavigationController padre, por lo que querrás ocultar el UINavigationBar padre y mostrar el tuyo. Después de eso, podrá volver a su tabla usando popToRootViewControllerAnimated : en el UINavigationController del UINavigationController .

Espero que ayude :)


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


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 botón cambien a medida que se presionan las diferentes pestañas.

Tampoco necesitaría los controladores de navegación adicionales con este enfoque.