Tengo una aplicación NavigationBar con dos vistas: una principal y una subvista. En la vista de sub estoy añadiendo un botón a la esquina derecha de la siguiente manera:Cómo cambiar la imagen y desactivar UIBarButtonItem
- (void)viewDidLoad {
UIBarButtonItem *tempButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"lock-unlocked.png"] style:UIBarButtonItemStylePlain target:self action:@selector(lockScreen)];
self.navigationItem.rightBarButtonItem = tempButton;
[tempButton release];
}
Cuando se hace clic en el botón que quiero cambiar la imagen de este rightBarButtonItem y desactivar la leftBarButtonItem (que se añadió de forma automática por el controlador) Básicamente tiene dos estados de un botón, bloqueado y desbloqueado.
Pregunta 1: La única forma en que puedo encontrar cómo cambiar la imagen es crear un nuevo UIButtonItem con una nueva imagen y reemplazar rightBarButtonItem con la nueva. Pero me pregunto si hay una manera de simplemente cambiar la imagen sin crear un nuevo UIBarButtonItem. ¿Estoy creando una pérdida de memoria si sigo creando un nuevo UIBarButtonItem?
Pregunta 2: ¿Cómo puedo obtener una autorización de self.navigationItem.leftBarButtonItem y desactivarla/habilitarla? No lo creo manualmente, el controlador lo crea automáticamente para mí. No veo ningún método/propiedad en UIBarButtonItem para habilitar/deshabilitar la interacción del usuario con él.
Este enfoque se ve mucho mejor. ¡Gracias! –
Un pequeño problema para la tercera parte del código: PUEDE liberar tempButton después de alloc porque ya se ha conservado cuando lo declara como una propiedad. –
en realidad iPhoney. porque no llamó a self.tempButton, la propiedad NO retendrá. retener propiedad solo se puede activar si usa self.VAR –