¿Cómo ocultar el botón 'Atrás' en la barra de navegación en iPhone?

315

Agregué un control de navegación para cambiar de vista 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 Atrás?

Zhong frío
fuente

Respuestas:

812

C objetivo:
self.navigationItem.hidesBackButton = YES;

Rápido:
navigationItem.hidesBackButton = true

usuario8170
fuente
@ user8170 ¿cómo ocultar el elemento de botón izquierdo de la barra de navegación?
Rockey
99
no puedes ocultar el botón de retroceso self.navigationItem.leftBarButtonItem = nil;. Si ha establecido leftbarbuttonitem explícitamente, puede usarlo self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;ocultará el elemento del botón Atrás
rakeshNS
1
En iOS 7, self.navigationItem.leftBarButtonItem = nil; no afecta el botón de retroceso cuando se emite desde viewDidLoad, viewWillAppear o viewDidAppear. Esta línea de código funciona dentro de viewdidLoad: self.navigationItem.hidesBackButton = YES;
Alex Zavatone
2
No estoy seguro de si esto ayuda, pero 'self' siempre es un controlador de vista que se presenta en la parte superior de la pila del controlador de navegación.
Kunal Balani
self.navigationItem.hidesBackButton = YES; funciona para mí en viewDidLoad, ios 7
leukosaima
38

La mejor manera es combinarlos, por lo que ocultará el botón Atrás incluso si lo configura manualmente:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
Skrew
fuente
66
Para responder al usuario 716216, lo explicó en su explicación de una oración. La segunda línea de código es lo que funciona para el caso predeterminado. La primera línea de código funciona si ha creado y agregado el botón usted mismo.
Alex Zavatone
21

ocultar el botón de retroceso con el siguiente código ...

[self.navigationItem setHidesBackButton:YES animated:YES];

o

[self.navigationItem setHidesBackButton:YES];

Además, si tiene un UINavigationBarcódigo personalizado , pruebe el siguiente código

self.navigationItem.leftBarButtonItem = nil;
Paras Joshi
fuente
en cualquier clase cuando usaste ese código, entonces en el botón de retroceso de la barra de navegación de esa clase se ocultará ...
Paras Joshi
6

En Swift :

Agregue esto al controlador

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}
Rey Mago
fuente
3

En la función viewDidLoad del UIViewController use el código:

self.navigationItem.hidesBackButton = YES;
indiefr
fuente
2

No olvide que necesita llamarlo en el objeto que tiene el controlador de navegación. Por ejemplo, si tiene un controlador de navegación presionando un controlador de barra de pestañas con un RootViewController, llamar self.navigationItem.hidesBackButton = YESal RootViewController no hará nada. En realidad deberías llamarself.tabBarController.navigationItem.hidesBackButton = YES

Tyler
fuente
2

No olvides que ahora tenemos el gesto de deslizar hacia atrás. Probablemente también quieras eliminar esto. No olvide habilitarlo nuevamente si es necesario.

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Bruno Delgado
fuente
1

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;
Bhavsar1311
fuente
1

Para mí, nada de lo anterior parecía funcionar, no tenía ningún efecto visual. Estoy usando guiones gráficos con una vista que está "incrustada" 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 de retroceso" es visible al depurar visualmente la jerarquía de vista, y mi icono de elemento de menú se muestra debajo del "botón de retroceso" invisible.

Probé la configuración, como se sugirió en los diversos métodos de enlace y eso no tuvo ningún efecto. Luego probé un enfoque más brutal e iteré sobre la subvista que tampoco tuvo ningún efecto.

Inspeccioné los tamaños de mis íconos y parecía estar bien. Después de referirme a la Guía de interfaz humana de Apple, confirme que mis iconos son correctos. (1 píxel más pequeño en mi caso 24px 48px 72px).

La parte más extraña es la solución real ...

Al agregar el elemento BarButton, dele un título con al menos un carácter , en mi caso, un 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];
Wayne
fuente
1

No funcionó para mí en todos los casos cuando configuré

self.navigationItem.hidesBackButton = YES;

en viewWillAppear o ViewDidLoad, pero funcionó perfectamente cuando lo configuré en init del viewController.

Joe M
fuente
0

prueba este self.navigationController?.navigationItem.hidesBackButton = true

Ahil Rahesh
fuente
0

En c # o Xamarin.ios, this.NavigationItem.HidesBackButton = true;

Anisetti Nagendra
fuente
0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

si usa este bloque de código dentro de didLoad o loadView funcionó pero no funcionó a la perfección. Si observa detenidamente, puede ver que el botón de retroceso se oculta cuando se carga su vista.

¿Cuál es la solución perfecta?

Agregue el componente BarButtonItem desde componentView (Comando + Mayús + L) a la barra de navegación de la vista de destino Controladores.

Seleccione BarButtonItem set Title = "" desde el panel derecho

ingrese la descripción de la imagen aquí

ahmet yilmaz
fuente