Pregunta

Agregué 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 retroceso?

¿Fue útil?

Solución

Objetivo-C:
     self.navigationItem.hidesBackButton = YES;

Swift:
     navigationItem.hidesBackButton = true

Otros consejos

La mejor manera es combinarlos, por lo que ocultará el botón de retroceso incluso si lo configuras manualmente:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

botón para ocultar de nuevo con el código de abajo ...

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

o

[self.navigationItem setHidesBackButton:YES];

Además, si tiene UINavigationBar personalizado, intente con el siguiente código

self.navigationItem.leftBarButtonItem = nil;

Usa el código:

 self.navigationItem.backBarButtonItem=nil;

En Swift :

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

No olvide que debe llamarlo al 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 a self.navigationItem.hidesBackButton = YES en el RootViewController no hará nada. En realidad, debería llamar a self.tabBarController.navigationItem.hidesBackButton = YES

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

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

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

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;

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á incrustada " " en un controlador de navegación.

Luego, a nivel de código, agrego mis elementos de menú y, por alguna razón, el " backButton " está visible cuando se realiza una depuración visual de la jerarquía de vistas, y el ícono de mi menú de menú se muestra debajo del botón " retroceder " invisible

Probé los ajustes, como se sugirió en los diversos métodos de enganche 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é el tamaño de mis íconos y parecía que estaba bien. Después de referirme a 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 es la solución real ...

Al agregar el elemento BarButton, dele 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];

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

self.navigationItem.hidesBackButton = YES;

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

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top