J'ai donc essayé de Ben approche gagnante mais à la fin je l'ai trouvé mauvais pour ma part - mais je suis sûr que ça dépend de ce que vous essayez de faire. J'ai essayé de montrer une barre de navigation bouton sous certaines conditions seulement, et ensuite se cacher dès que la condition n'était plus remplies (dans mon cas, c'est un bouton "Terminé" utilisé pour masquer le clavier associé à un UITextView. Il ne doit être affiché lorsque l'utilisateur tape dans l'affichage de texte). Mes pas étaient comme suit:
J'ai ajouté un UIBarButtonItem comme un
bien dans ma UIViewController
classe. Je l'instancier dans le
initWithNibName méthode.
Je lui ai donné la UIBarButtonItem propriété que l'
rightBarButtonItem dans la barre de navigation en tant que
dès que l'utilisateur commence à taper dans
l'affichage de texte.
J'ai défini la propriété UIBarButtonItem
à néant lorsque l'utilisateur a fini de taper.
Il fonctionne comme un charme. Je suis en ajoutant quelques exemples de code ci-dessous.
D'abord instancier le bouton de mon point de vue contrôleur méthode init:
barButtonItemDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)];
Puis-je définir comme le droit de la barre de bouton en le délégué de la méthode qui est appelée dès que l'utilisateur commence à modifier l'affichage de texte:
self.navigationItem.rightBarButtonItem=[self barButtonItemDone];
Enfin, lorsque le bouton est cliqué, une méthode appelée "fait" est appelé et je viens de mettre la rightBarButtonItem à néant à l'intérieur de cette méthode:
self.navigationItem.rightBarButtonItem=nil;