J'ai une application NavigationBar avec deux vues: un parent et une vue secondaire. De l'avis sous j'ajouter un bouton à la droite comme suit:Comment changer l'image et désactiver 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];
}
Lorsque ce bouton est cliqué, je veux changer l'image de cette rightBarButtonItem et désactiver le leftBarButtonItem (qui a été ajouté automatiquement par le contrôleur). Fondamentalement avoir deux états d'un bouton, verrouillé et déverrouillé.
Question 1: La seule façon que je peux trouver comment changer l'image est de créer un nouvel UIButtonItem avec une nouvelle image et remplacer rightBarButtonItem avec ce nouveau. Mais je me demande s'il y a un moyen de simplement changer l'image sans créer un nouvel UIBarButtonItem. Est-ce que je crée une fuite de mémoire si je continue à créer un nouvel UIBarButtonItem?
Question 2: Comment mettre la main sur self.navigationItem.leftBarButtonItem et le désactiver/l'activer? Je ne crée pas celui-là manuellement, il est créé automatiquement pour moi par le contrôleur. Je ne vois aucune méthode/propriété sur UIBarButtonItem pour activer/désactiver l'interaction de l'utilisateur avec elle.
Cette approche est beaucoup mieux. Merci! –
Un petit problème pour le 3ème morceau de code: vous pouvez libérer tempButton après alloc car il a déjà été conservé lorsque vous le déclarez comme une propriété. –
en fait iPhoney. parce qu'il n'a pas appelé self.tempButton, la propriété ne sera pas conservée. conserver la propriété ne peut être déclenchée que si vous utilisez self.VAR –