Ho un'app NavigationBar con due viste: una parent e una vista secondaria. Nella vista sub Sto aggiungendo un pulsante alla destra come segue:Come cambiare immagine e disabilitare 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];
}
Quando questo pulsante viene premuto voglio cambiare l'immagine di questo rightBarButtonItem e disattivare il leftBarButtonItem (che è stata aggiunta automaticamente dal controller). Fondamentalmente hanno due stati di un pulsante, bloccato e sbloccato.
Domanda 1: L'unico modo per trovare come modificare l'immagine è creare un nuovo UIButtonItem con una nuova immagine e sostituire rightBarButtonItem con quello nuovo. Ma mi chiedo se c'è un modo per cambiare semplicemente l'immagine senza creare un nuovo UIBarButtonItem. Sto creando una perdita di memoria se continuo a creare un nuovo UIBarButtonItem?
Domanda 2: Come posso ottenere una sospensione di self.navigationItem.leftBarButtonItem e disabilitarla/abilitarlo? Non lo creo manualmente, viene creato automaticamente dal controllore. Non vedo alcun metodo/proprietà su UIBarButtonItem per abilitare/disabilitare l'interazione dell'utente con esso.
Questo approccio sembra molto meglio. Grazie! –
Un piccolo problema per il terzo pezzo di codice: puoi rilasciare tempButton dopo l'allocazione perché è già stato mantenuto quando lo dichiari come proprietà. –
effettivamente iPhoney. poiché non ha chiamato self.tempButton, la proprietà NON manterrà. mantenere la proprietà può essere attivata solo se si utilizza self.VAR –