¿Cómo puedo ocultar el texto del botón Atrás de un controlador de navegación UIN? Solo tendré el "<" y no el "<Atrás"
104
¿Cómo puedo ocultar el texto del botón Atrás de un controlador de navegación UIN? Solo tendré el "<" y no el "<Atrás"
Respuestas:
En el generador de interfaz , puede seleccionar el elemento de navegación del controlador anterior y cambiar la
Back Button
cadena a la que le gustaría que aparezca el botón Atrás. Si lo quiere en blanco, por ejemplo, simplemente ponga un espacio.También puede cambiarlo con esta línea de código:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
O en Swift :
self.navigationItem.backBarButtonItem?.title = ""
fuente
Back Button
ya está en blanco en IB, simplemente agregue un espacio para viajarBack
y muestre la flecha.También puede hacer esto a través del guión gráfico. En el inspector de atributos del elemento de navegación del controlador anterior , puede establecer "" en el campo del botón Atrás. Consulte la imagen a continuación. Reemplaza "Tu título aquí" por "". Al hacer esto, logrará el resultado deseado. Ya no necesita meterse con el 'Título'.
Programáticamente podrías usar
[self.navigationItem.backBarButtonItem setTitle:@" "];
donde self se refiere al controlador que presiona el controlador de vista deseado.
Muestra antes, después de la barra de navegación
antes de
Después
fuente
backBarButtonItem
programática no funciona, pero la configuración a través del guión gráfico sí.backBarButtonItem
programáticamente en iOS 9.Puedes implementar
UINavigationControllerDelegate
así:Swift mayor
Swift 4.x
backBarButtonItem
esnil
por defecto y afecta al siguiente controlador empujado, por lo que simplemente lo configura para todos los controladoresfuente
Establecer el título del botón de retroceso en
@""
onil
no funcionará. Debe dejar todo el botón vacío (sin título o imagen):C objetivo
Rápido
Esto debe hacerse en el controlador de vista que está en la parte superior de su controlador de vista en la pila de navegación (es decir, desde donde navega a su VC a través del
pushViewController
método)fuente
Otra solución a este problema para situaciones en las que tiene una gran cantidad de controladores de vista es usar un
UIAppearance
proxy para ocultar efectivamente el texto del título del botón Atrás como este:Esta solución representará el texto como un pequeño punto claro, similar a configurar manualmente el título del botón Atrás
@" "
, excepto que afecta a todos los botones de la barra de navegación.No sugiero esto como una solución general al problema porque afecta a todos los botones de la barra de navegación. Cambia el paradigma para que usted elija cuándo mostrar los títulos de los botones, en lugar de cuándo ocultar los títulos.
Para elegir cuándo mostrar los títulos, restaure manualmente los atributos del texto del título según sea necesario o cree una subclase especializada
UIBarButtonItem
que haga lo mismo (potencialmente con otroUIAppearance
proxy).Si tiene una aplicación en la que la mayoría de los títulos del botón de retroceso deben estar ocultos, y solo algunos (o ninguno) de los botones de navegación son botones del sistema con títulos, ¡esto podría ser para usted!
(Nota: es necesario cambiar el tamaño de la fuente aunque el color del texto sea claro para garantizar que los títulos largos no hagan que el título de la barra de navegación central se mueva)
fuente
Agregue el siguiente código en viewDidLoad o loadView
Lo probé en iPhone y iPad con iOS 9
fuente
Puede agregar esta categoría Objective-C para que todos los botones "Atrás" creados por un controlador de navegación no tengan texto. Lo acabo de agregar a mi archivo AppDelegate.m.
PD: (no sé cómo hacer que esta extensión funcione con Swift, estaba teniendo errores extraños. Las ediciones son bienvenidas para agregar una versión Swift)
fuente
override
hacerlo en rápido. Pregunta muy interesanteProbé algunos arriba y abajo pero no funcionaron. Esto funcionó para mí:
fuente
Lo único que funciona sin efectos secundarios es crear un botón de retroceso personalizado. Siempre que no proporcione una acción personalizada, incluso el gesto de deslizar funciona.
Desafortunadamente, si desea que todos los botones de retroceso no tengan ningún título, debe configurar este botón de retroceso personalizado en todos sus controladores de vista: /
Es muy importante que establezca un espacio en blanco como título y no como cadena vacía.
fuente
para eliminar el texto del botón de fondo mediante programación, se usa debajo del código, esto funcionará desde xcode7 y superior.
self.navigationController.navigationBar.topItem.title = @ "";
o
manualLy en los guiones gráficos, seleccione la barra de navegación en el controlador de vista y coloque "" en el texto del botón de retroceso.
esto funcionará. Gracias
fuente
self.navigationController?.navigationBar.topItem?.title = " "
en Xcode 9 y trabajé!La respuesta actual no estaba funcionando. Quería eliminar el título por completo, pero el texto "atrás" no desaparecía.
Regrese al controlador de vista anterior y establezca su propiedad de título:
SOLO funciona cuando el controlador de vista anterior no tiene un título
fuente
@""
.Manera alternativa: use la clase NavigationBar personalizada.
Es decir, esto elimina los títulos de todo el proyecto. Simplemente configure una clase personalizada para UINavigationController.
fuente
Establezca el título del VC anterior en "" cadena con espacio. y el título con el botón Atrás se reemplazará con una cadena de un solo espacio.
En Atrás presione nuevamente para restablecer el título al original en la vista.
fuente
Utilice una costumbre
NavigationController
que anulepushViewController
fuente
Ya tengo muchas respuestas, aquí están mis dos centavos sobre el tema. Encontré este enfoque realmente sólido. Solo necesita poner esto en viewController antes de segue.
Rápido 4:
fuente
Probé todo en esta publicación. La única solución que funciona es @ VoidLess's
Aquí tienes la misma respuesta pero más completa.
fuente
Esta es mi resolución para iOS11, cambio la apariencia de UIBarButtonItem en applicationDidFinishLaunchingWithOptions:
No puede cambiar el desplazamiento Y, porque también cambiará la posición del botón de la barra trasera en iOS11, pero está bien en iOS10 y versiones inferiores.
fuente
En Swift3,
Si establece la configuración global
fuente
Swift 3.1 Puede hacer esto implementando el método delegado de UINavigationController.
fuente
Para aquellos que quieren ocultar el título del botón de retroceso a nivel mundial.
Puede swizzle
viewDidLoad
deUIViewController
esta manera.Uso:
fuente
Si tiene como objetivo iOS 13 y versiones posteriores, puede usar esta nueva API para ocultar el título del botón Atrás a nivel mundial .
fuente
Estaba luchando con esto porque tenía un controlador de navegación personalizado. Pude eliminar el texto del elemento posterior en todos los controladores de vista con este código en mi clase de controlador de navegación personalizado
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Esto elimina todos los títulos de los elementos posteriores mediante este controlador de navegación personalizado.
fuente
En iOS 11, descubrimos que establecer
UIBarButtonItem
la fuente / color del texto de apariencia en un valor muy pequeño o un color claro hará que desaparezca otro elemento de la barra (el sistema ya no respeta la clase del elemento UIBarButton, lo convertirá en a_UIModernBarButton
). Además, configurar el desplazamiento del texto posterior a fuera de la pantalla hará que parpadee durante el pop interactivo.Así que swizzled
addSubView
:fuente
fuente
El texto posterior proviene del último controlador de vista
navigationItem.title
, ynavigationItem.title
lo establece automáticamenteself.title
. Una forma tan fácil de resolver el problema es engancharsetTitle:
.navigationItem.title = @""
Pon este código en
AppDelegate.m
lo hará bien。Más detalles en https://www.jianshu.com/p/071bc50f1475(Simple Chinease)
fuente
Mi solución: - XCode: 10.2.1 - Swift: 5
fuente
XCode 11.5 Swift 5
Una forma muy simple, aunque quizás un poco engañosa, de hacer esto programáticamente si no necesita el botón de retroceso personalizado es establecer el tamaño de fuente igual a cero en el controlador de vista que está presionando en la pila, llamando a algo como esto desde viewDidLoad
fuente
Finalmente encontré la solución perfecta para ocultar el texto trasero predeterminado en toda la aplicación.
Simplemente agregue una imagen transparente y agregue el siguiente código en su AppDelegate.
fuente
El siguiente método funciona en iOS 11 y es seguro que no se bloquee en otras versiones de iOS. Hacer esto puede hacer que su aplicación sea rechazada en la revisión de la App Store, ya que tanto UIModernBarButton como UIBackButtonContainerView son API privadas. Coloque en AppDelegate.
fuente
Versión Swift, funciona perfectamente a nivel mundial:
fuente
solution
. Como señaló @limfinity, lo cambiará universalmente para todos los UIBarButtonItem en toda la aplicación