Lo que quería hacer es eliminar el texto del botón 'Atrás' de a UIBarButtonItem
, dejando solo el galón azul en la barra de navegación. Tenga en cuenta que estoy desarrollando para iOS 7. He probado varios métodos, que incluyen, entre otros:
Este es el método de imagen que no me gustó (la imagen parecía fuera de lugar):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Otro método que probé fue este, que simplemente no funcionó (no se mostró nada):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Lo que quería lograr es algo así como los botones de retroceso que se encuentran en la aplicación iOS 7 Music, que solo presentaba un solo galón.
Gracias.
ios
uinavigationbar
uibarbuttonitem
uinavigationitem
Pan Ziyue
fuente
fuente
Respuestas:
Luego puede eliminar el título del elemento del botón Atrás.
Si usa Storyboard, puede configurar el botón Atrás del inspector de atributos de navegación con espacio.
fuente
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
asíPara configurar el título del botón de retroceso para un controlador de vista sin cambiar el uso del título:
C objetivo:
Rápido:
Para que quede claro, esto se hace en el controlador de vista que vería si presiona el botón Atrás. es decir, en lugar de ver '<Configuración', solo desea ver '<' y luego, en su SettingsViewController, debe poner esto en su
init
. Entonces no obtienes ninguno de los problemas del título que no se muestra cuando estás mirando el controlador de vista en sí.fuente
Si está utilizando Storyboards, puede
Attributes Inspector
acceder al ViewControllerNavigation Item
(hacer clic enNavigation Bar
) y establecer laBack Button
propiedad en "" (un carácter de espacio). Esto establecerá el título del botón Atrás en un carácter de espacio, dejando el galón visible. No hay necesidad de meterse con el código.Tenga en cuenta que esto establecerá el
Back Button
título para el botón Atrás que pasará a este controlador de vista del que se presionó encima, ¡no para elBack Button
que se mostrará dentro de este controlador!fuente
Esto funciona para mí para mostrar solo el galón 'atrás' sin ningún texto:
Establezca esta propiedad en
viewDidLoad
el controlador de vista que presenta la barra de navegación y hará el truco.Nota: solo lo he probado en iOS 7, que está dentro del alcance de la pregunta.
fuente
-viewDidLoad
VC para el que no quiero el texto Atrás. Sin embargo, lo que descubrí más tarde fue que cuandonavigationController
aparece el segundo VC del texto del Título aparece poco después, no inmediatamente. Supongo que un video ilustraría esto mejor, así que aquí está: enlaceCuando configure el título del botón, use @ "" en lugar de @ "".
--EDITAR--
¿Algo cambia cuando pruebas otras cuerdas? Estoy usando el siguiente código con éxito:
backString es una variable que se establece en @ "" o @ "Back", dependiendo de si estoy en iOS 7 o una versión inferior.
Una cosa a tener en cuenta es que este código no está en el controlador de la página para la que quiero personalizar el botón Atrás. En realidad está en el controlador antes que en la pila de navegación.
fuente
setLeftBarButtonItem:backButton
cambio nada estaría allí.A veces es útil ver las cosas en contexto. Aquí hay un proyecto mínimo que oculta el texto "atrás" pero aún muestra la flecha.
Storyboard
Hay un show segue del botón "Mostrar segundo controlador de vista" al segundo controlador de vista.
También agregué un elemento de navegación al segundo controlador de vista para que tuviera un título. Esto es opcional No afecta el botón de retroceso.
Código
FirstViewController.swift
SecondViewController.swift
Método alternativo (solo IB, sin código)
En el guión gráfico, seleccione el elemento de navegación para el primer controlador de vista (no el segundo). Simplemente ingrese un espacio para el texto del botón Atrás.
fuente
fuente
En iOS7, Apple introdujo dos nuevas propiedades a UINavigationBar, 'backIndicatorTransitionMaskImage' y 'backIndicatorImage'.
Simplemente llamando una vez:
Representará una imagen personalizada en lugar del glifo de chevron predeterminado, heredando el color de tinte de keyWindow.
Y para eliminar el título, sugeriré la respuesta de Kamaros. Recuerde llamar a este código en el controlador de vista que está impulsando su nuevo controlador de vista. Eliminar el texto del título de un iOS UIBarButtonItem
fuente
No tuve mucho éxito con las respuestas proporcionadas, pero encontré una solución muy simple. En su guión gráfico, puede hacer clic en el elemento de navegación de su controlador UIViewController y establecer el texto del botón Atrás. Lo configuré en un solo espacio '' y me dio el comportamiento que estaba buscando.
fuente
Esto funcionó para mí en iOS10. Llame a esto desde viewDidLoad del controlador de vista.
fuente
La solución simple a este problema, trabajando tanto en iOS7 como en 6, es establecer una vista de título personalizada en viewDidLoad:
Luego, en viewWillAppear: puede llamar con seguridad
Debido a que su vista de título es una vista personalizada, no se sobrescribirá cuando vuelva a la pila de navegación.
fuente
[self.navigationItem.backBarButtonItem setTitle:@" "];
a viewWillAppear pero no funcionaba en las vistas presentadas después de descartar una vista modal.En realidad, puedes hacer esto con solo un truco:
Anule la
UINavigationBar
clase y agregue esta línea de código:Luego inicialice su
UINavigationController
con esta clase personalizada UINavigationBar ... etc.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Espero que esto ayude
fuente
Pude improvisar algo juntos usando la respuesta de DonnaLea. Así es como aparece la solución en mi subclase UIViewController:
El problema con la respuesta original es que elimina el título del controlador cuando vuelve a aparecer. Intentar restablecer el título en viewWillDisappear es demasiado tarde en el proceso de transición; Hace que el título vuelva a aparecer en lugar de animarse bien. Sin embargo, willMoveToParentViewController ocurre antes y permite el comportamiento correcto.
Advertencia: solo he probado esto con un UINavigationController push / pop normal. Puede haber un comportamiento inesperado adicional en otras situaciones.
fuente
En el método prepareForSegue: de su primer ViewController, establece el título de las vistas en @ "", de modo que cuando se presiona la siguiente vista, mostrará el título anterior de ViewController, que será @ "".
El único problema con esto es que cuando presiona el botón Atrás, su vista anterior no tendrá un título, por lo que puede agregarlo nuevamente en viewWillAppear:
No me gusta mucho esta solución, pero funciona y no encontré otra forma de hacerlo.
fuente
SWIFT 3
fuente
Ninguna de las respuestas me ayudó. Pero lo hizo un truco: acabo de borrar el título del controlador de vista que presionó (hacia donde va el botón de retroceso) justo antes de presionarlo.
Entonces, cuando la vista anterior no tiene un título, en iOS 7 el botón Atrás solo tendrá una flecha, sin texto.
En
viewWillAppear
la vista de empuje, volví a colocar el título original.fuente
Estaba teniendo el mismo problema y lo hice de esta manera.
--EDITAR--
Esta es una solución cuando realmente desea eliminar el texto del título de todo UIBarbuttonItem. Si solo desea eliminar el título del elemento del botón de la barra posterior, no existe una solución simple y conveniente. En mi caso, dado que solo tengo algunos UIBarButtonItems que necesitan mostrar el texto del título, acabo de cambiar el título titleTextAttributes de esos botones específicos. Si desea ser más específico, use el código a continuación, que solo cambiará los botones de la barra de navegación:
fuente
UIControlStateHighlighted
, asíEsto está usando la subclase
navigationController
elimina la "Atrás".Estoy usando esto para eliminarlo, permanentemente a través de la aplicación.
fuente
fuente
Ocultar el título del botón Atrás de la barra de navegación
fuente
Esto es lo que estoy haciendo, que es más simple para eliminar el título del botón Atrás
fuente
Swift 3.1 Puede hacer esto implementando el método delegado de UINavigationController. Ocultará el título solo con el botón Atrás, aún obtendremos la imagen de la flecha hacia atrás y la funcionalidad predeterminada.
fuente
También puedes usar esto:
Esto funciona para mi
fuente
fuente
Solución perfecta a nivel mundial
fuente
Creo una clase personalizada
UINavigationController
y la aplico a todos los controladores de navegación de mi aplicación. Dentro de estaUINavigationController
clase personalizada configuro elUINavigationBar
delegadoself
una vez que se carga la vista.Luego implemento el método delegado:
De esta manera, simplemente asigno mi clase personalizada a todos mis controladores de navegación y borra el título de todos los botones de retroceso. Y solo por claridad, siempre configuro el título para todos mis otros controladores de vista en el interior
viewWillAppear
para que el título siempre se actualice justo antes de que aparezca la vista (en caso de que se elimine con trucos como este).fuente
¡Simplemente ingresando un solo espacio para el elemento de navegación del botón Atrás funciona!
fuente
Si, como yo, estás usando una vista personalizada en lugar de la
UINavigationBar
y estás atascado con el botón de retroceso, entonces tienes que hacer un poco de trabajo que se siente un poco complicado.Parece que si no se presenta, no importa lo que intente, muestre un título, esto significa que se muestra oculto antes de dibujarlo y resuelve el problema.
fuente
fuente
Hice una categoría de configuración cero muy simple para ocultar todos los títulos de los botones de retroceso a través de nuestra aplicación, puede consultarla aquí . Esta pregunta ya ha aceptado la respuesta, pero para otros puede ser útil.
EDITAR:
archivo .h
archivo .m
fuente