inicio - control por boton iphone
¿Cómo ocultar el botón ''Atrás'' en la barra de navegación del iPhone? (11)
Agregue este código en su controlador de vista
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
He añadido un control de navegación para cambiar entre las vistas en mi aplicación. Pero algunas de las vistas no deberían tener el botón "Atrás" (el título anterior). ¿Alguna idea sobre cómo ocultar el botón de atrás?
En Swift :
Agrega esto al controlador
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
En la función viewDidLoad del UIViewController use el código:
self.navigationItem.hidesBackButton = YES;
La mejor manera es combinarlos, por lo que ocultará el botón de retroceso incluso si lo configura manualmente:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
No me funcionó en todos los casos cuando configuré
self.navigationItem.hidesBackButton = YES;
en viewWillAppear o ViewDidLoad, pero funcionó perfectamente cuando lo puse en init del viewController.
No olvide que debe llamarlo al objeto que tiene el controlador de navegación. Por ejemplo, si tiene el controlador de navegación presionando un controlador de barra de pestañas con un RootViewController, llamar self.navigationItem.hidesBackButton = YES
en el RootViewController no hará nada. Tendrías que llamar a self.tabBarController.navigationItem.hidesBackButton = YES
No olvides que ahora tenemos el gesto de deslizar hacia atrás. Probablemente quieras quitar esto también. No olvides habilitarlo de nuevo si es necesario.
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Para mí, nada de lo anterior parecía funcionar, no tenía ningún efecto visual. Estoy utilizando guiones gráficos con una vista que está "integrada" en un controlador de navegación.
Luego, a nivel de código, agrego mis elementos de menú y, por alguna razón, el "botón Atrás" está visible al depurar visualmente la jerarquía de vistas, y el icono de mi artículo de menú se muestra debajo del "botón de retroceso" invisible.
Probé los ajustes, como se sugirió en los diversos métodos de gancho y eso no tuvo ningún efecto. Luego probé un enfoque más brutal e hice una iteración sobre la subvista que tampoco tuvo efecto.
Inspeccioné los tamaños de mis iconos y parecía estar bien. Después de consultar la Guía de la interfaz humana de Apple, confirmé que mis íconos son correctos. (1 píxel más pequeño en mi caso 24px 48px 72px).
La parte más extraña entonces es la solución real ...
Al agregar el elemento BarButton, dale un título con al menos un carácter , en mi caso, un carácter de espacio.
Espera que esto ayude a alguien.
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
Usa el código:
self.navigationItem.backBarButtonItem=nil;
botón de ocultar de nuevo con el código de abajo ...
[self.navigationItem setHidesBackButton:YES animated:YES];
o
[self.navigationItem setHidesBackButton:YES];
Además, si tiene una UINavigationBar
personalizada, intente con el siguiente código
self.navigationItem.leftBarButtonItem = nil;
C objetivo:
self.navigationItem.hidesBackButton = YES;
Rápido:
navigationItem.hidesBackButton = true