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


Respuestas:


812

C objetivo:
self.navigationItem.hidesBackButton = YES;

Rápido:
navigationItem.hidesBackButton = true


@ 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;

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;

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)
}


3

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

self.navigationItem.hidesBackButton = YES;

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


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;
}

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;

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

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.


0

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



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í

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.