2009-04-29 18 views
8

Esto puede ser una pregunta estúpida, pero ¿es posible mantener un UIBarButtonItem derecho en varias vistas administradas por un UINavigationController? Tengo una progresión de vistas que a menudo comparten el mismo derecho UIBarButtonItem, pero cuando presiono una nueva vista en mi UINavigationController, tengo que redefinir el botón cada vez, incluso si no ha cambiado. En su mayoría, la notable animación de transición de una vista a la siguiente es lo que me molesta porque el mismo botón se desvanece brevemente y luego vuelve a entrar, lo cual es innecesario ya que no hay un cambio visual real. ¿Debo considerar agregar un UIButton como una subvista de mi UINavigationBar y lograr un efecto de "botón de barra derecha" de esta manera?Propiedad RightBarButtonItem persistente de UINavigationItem

Respuesta

14

Lo hicimos en nuestra aplicación. Creamos un UIBarButtonItem único que intercambiamos de un UIViewController a otro mientras el usuario navega. El truco fue usar UINavigationControllerDelegate, el método navigationController: willShowViewController: animado. Configuramos el elemento de barra derecha derecho de UIViewController saliente en cero y el elemento de barra de barra derecho del controlador entrante en su botón. Es difícil de manejar, pero funciona.

+0

¡Impresionante! Gracias. Olvidé investigar el UINavigationControllerDelegate. – LucasTizma

+0

Gracias !! ¡¡Trabajó para mi!! :) –

+0

Oye, ¿cómo puedo obtener el controlador UIView saliente? parece que solo puedo obtener el que se presentará, pero no el actual? cheers – zanona

1

UIBarButtonItems se pueden crear como instancias independientes en un archivo nib/xib. Si no ocurre nada especial que le impida construir el botón en el constructor Interfaz, debe conectarlo a la propiedad RightBarButtonItem del UINavigationItem para cada controlador de vista que necesite reutilizar el botón. No se requiere el objetivo c.

+0

Hola Matt, ¿Puedes ser más específico con el ejemplo? Creo que esta es la implementación en el código de ejemplo NavBar.xcode, pero estoy teniendo problemas para seguir todo el proceso. (Por cierto, he votado a favor de su respuesta, ya que creo que es correcta y la solución más elegante). – mobibob

Cuestiones relacionadas