Tenía un controlador de vista principal con un título muy largo. Esto dio como resultado que el texto del botón de retroceso sangrara en el título del controlador de vista secundario.
Después de probar un montón de soluciones diferentes, esto es lo que terminé haciendo (ampliando el enfoque @ john.k.doe):
Usando Xcode 7.2, Swift 2
- En el guión gráfico, añadir una
Navigation Item
a la Parent escena Vista Controlador (no el niño VC)
- En el
Attributes Inspector
de su nuevo Navigation Item
, escriba un space
personaje en el Back Button
campo. Más sobre esto más tarde.
- En el Parent controlador de vista, añadir el siguiente código:
retazo:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case is ChildViewController:
navigationItem.backBarButtonItem?.title = ""
default:
navigationItem.backBarButtonItem?.title = "Full Parent Title"
}
}
Explicación:
El botón de retroceso pertenece al controlador de vista principal. El Navigation Item
le da un control al botón de retroceso, para que pueda establecer el título en código o en el Guión gráfico.
Nota:
Si deja el Navigation Item
Back Button
texto como la cadena vacía predeterminada, el título del botón Atrás se convertirá en "Atrás".
Otros enfoques funcionan, ¿por qué usar este ?:
Si bien es posible anular el título del botón de retroceso en el controlador de vista infantil, fue un desafío manejarlo hasta que ya apareció brevemente en la pantalla.
Algunos de los enfoques construyen un nuevo botón de retroceso y anulan el existente. Estoy seguro de que funciona, y probablemente sea necesario en algunos casos de uso. Pero prefiero aprovechar las API existentes cuando sea posible.
Cambiar el title
controlador de vista principal es la solución más rápida para algunas situaciones. Sin embargo, esto cambia el título principal, por lo que debe administrar el estado. Las cosas también se complican Tab Bar Controller
porque los cambios en el título causan efectos secundarios con los Tab Bar Item
títulos.