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.