Quiero eliminar el texto del botón de retroceso, pero quiero mantener el icono. Yo he tratado
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
Sin embargo, esto elimina completamente el texto y el icono.
Sé que esto ya tiene una respuesta, pero también puede hacerlo en código (en caso de que esté trabajando con plumillas)
Agregue lo anterior en el primer controlador de vista.
Tenga en cuenta que debe hacer esto para cada controlador de vista que esté presionando. Entonces, si tiene 3 controladores de vista y desea eliminar el texto posterior de todos ellos, tendrá que agregar la línea en el controlador de vista 1 y 2.
fuente
.Plain
fue cambiado a.plain
. Sin mayúscula p.Después de buscar mucho, encontré la mejor y más simple solución, esto afectará a todos los viewControllers escritos en Swift 4.2 y que también funcionan en Swift 5
fuente
El texto del botón Atrás depende del título de la vista maestra.
El truco consiste en borrar el título si la vista maestra desaparece y volver a configurarlo si se vuelve a mostrar:
fuente
Si desea eliminar el título de un botón de retroceso de un controlador de vista empujado, digamos
<Settings
que<
en subSettingsViewController, entonces debe establecer el título backBarButtonItem en la vista de SettingsViewController () método .C objetivo:
Rápido:
fuente
.Plain
fue cambiado a.plain
. Sin mayúscula p.Si desea la flecha hacia atrás, coloque el siguiente código en el archivo AppDelegate en el método didFinishLaunchingWithOptions.
Para Swift
fuente
En mi caso, para el icono y el título personalizados, esto funcionó (Swift 4)
fuente
Resolví este problema agregando un "" en el título del StoryBoard del ViewController anterior. Solo un espacio, no vacío; D
fuente
Finalmente encontré la solución perfecta.
Simplemente agregue una imagen transparente y agregue el siguiente código en su AppDelegate.
fuente
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment
truco que recomiendan la mayoría de las otras respuestas, pero se rompió en el iPhone X para los controladores de vista con títulos largos. Esta solución funciona a la perfección.en rápido 4
fuente
Para Swift 4+ poner estas líneas en
AppDelegate
aldidFinishLaunchingWithOptions
fuente
Esto es trabajo para mí
fuente
Si tiene un ViewControllerA y desea navegar hasta ViewControllerB, en ViewControllerA, debe configurar el navigationItem actual con un nuevo UIBarButtonItem y el título en una cadena con espacio en blanco antes de enviarlo a otro controlador de vista:
Establezca el título en una cadena con un espacio en blanco, no puede establecer nil o "" (cadena vacía) porque el valor predeterminado es nil
fuente
Pon este código en cada VC que empuja a otro
fuente
fuente
Para eliminar de todos los controladores de vista en una pila de controladores de navegación:
subclase UINavigationController y agregue esto:
fuente
A veces no funciona cambiar solo el color del título, en caso de que el título sea largo. Porque podría desplazar el título de la barra de navegación hacia la izquierda. Entonces, para evitarlo, es posible que deba cambiar el título del botón de la barra horizontalmente además de hacerlo transparente:
fuente
Detalles
Solución
1. Cree una clase personalizada de UINavigationController
2. Agregue la extensión UIViewController
3. Actualice su clase ViewController
Muestra completa
Resultado
fuente
Para mí, esto funcionó:
Tenga en cuenta que si solo establece el título sin modificar el backBarButtonItem, parecerá que funciona. Pero si intenta regresar usando un gesto y luego cancela y permanece en el controlador de vista empujado, el título anterior volverá.
Trabajar en Swift 4
fuente
Debe seleccionar la barra de navegación del controlador DESDE el botón de retroceso al que apuntará y escribir "" en el campo Botón de retroceso.
Por ejemplo, si está presionando el controlador A al controlador B, coloque un espacio en blanco en la barra de navegación del controlador A.
fuente
Xcode 10, Swift 4+
Respuesta similar a las otras aquí, pero vale la pena señalar que si el texto aún no se borra, debe hacer clic en Espacio y luego en Entrar.
fuente
Una alternativa para anular todo
ViewControllers
para mí era extenderUINavigationController
y configurarbackBarButtonItem
eltopViewController
.Swift 5
en Xcode 11.2.1:fuente
La forma más sencilla de hacer esto mediante programación es establecer
backBarButtonItem
desde el controlador de vista principal (un controlador que llama a push).Más detalles aquí https://sarunw.com/posts/how-to-remove-text-from-uinavigationbar-back-button/
fuente
Puede eliminar texto del botón Atrás mediante un método delegado de
UINavigationController
.fuente
En Xcode 9.2 con Swift, funcionó así:
fuente
Para el caso en el que no tenemos control en absoluto del controlador de vista anterior (es decir, si estamos trabajando en un marco), podemos eliminar el título del botón de retroceso de la siguiente manera:
Lo que hace es navegar hasta el último elemento de la pila de navegación y eliminar su título anterior. Asegúrese de guardar el original cuando aparezca nuestro controlador de vista:
y luego reasignarlo, para no interrumpir ninguna parte de la aplicación:
fuente
Esto solucionará su problema:
fuente
Probé un par de respuestas y no puedo hacer que funcionen en todos los casos. Entonces, esta es una solución para no afectar el título de la barra de navegación si está configurada.
fuente
La forma sencilla de programación, sin efectos secundarios no deseados, es inicializar navigationItem.backBarButtonItem con un elemento vacío en el método awakeFromNib del controlador de origen (desde el que está navegando):
Nota: Si inicializara el botón de retroceso más tarde, como en el método viewDidLoad () , perdería la funcionalidad de deslizar hacia atrás ( deslizar el dedo desde el borde izquierdo hacia la derecha lo lleva un paso hacia atrás en la pila de navegación).
Luego, si desea diferentes textos de botón de retroceso para diferentes controladores de destino y si está usando segues, puede establecer el título en el método prepare (for segue :, sender :) , así:
fuente