iphone - puedo - Agregar botón Atrás a la barra de navegación
control por boton iphone (3)
Si está usando un controlador de navegación:
MyViewController *_myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[[self navigationController] pushViewController:_myViewController animated:YES];
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = _backButton;
[_backButton release], _backButton = nil;
[_myViewController release], _myViewController = nil;
Si no está usando un controlador de navegación, busque en los componentes de estilo Three20 para hacer botones de barra personalizados.
Agregué una barra de navegación a un UIViewController. Se muestra desde otro UIViewController solamente. Me gustaría tener un botón de atrás del lado izquierdo con forma similar a una flecha, al igual que el botón de barra de navegación normal. Parece que solo puedo agregar un botón de barra a través de IB. Supongo que el botón Atrás necesita ser agregado programáticamente. ¿Alguna sugerencia sobre cómo debería hacer esto?
Actualmente, en RootController, presiono otro UIViewController (viewB) simplemente haciendo un addSubView. En viewB, quiero mostrar la barra de navegación. La aplicación se basa en la vista, no en el controlador de navegación.
Lo he hecho de la siguiente manera
En el método viewDidLoad tengo este código:
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 41)];
navBar.delegate = self;
UINavigationItem *backItem = [[UINavigationItem alloc] initWithTitle:@"Back"];
[navBar pushNavigationItem:backItem animated:NO];
[backItem release];
UINavigationItem *topItem = [[UINavigationItem alloc] initWithTitle:@"Your Title"];
[navBar pushNavigationItem:topItem animated:NO];
topItem.leftBarButtonItem = nil;
[topItem release];
[self.view addSubview:navBar];
[navBar release];
A continuación, agregue conformidad al protocolo UINavigationBarDelegate en el encabezado e implemente el método de delegado de esta manera:
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
//if you want to dismiss the controller presented, you can do that here or the method btnBackClicked
return NO;
}
Otro enfoque para resolver este problema es establecer la propiedad de los elementos para la barra de navegación en lugar de empujar consecutivamente los elementos de la barra en la pila de la barra de navegación:
//Define myFrame based on your needs
let navigationBar = UINavigationBar(frame: myFrame)
let backItem = UINavigationItem(title: "Back")
let topItem = UINavigationItem(title: "My Title")
navigationBar.setItems([backItem,topItem], animated: false)