2010-11-22 13 views
8

Je suis en train d'ajouter un UINavigationBar à un UIView par programmation, et j'ai maintenant besoin d'y ajouter un UIBarButtonItem. Je suis en train d'utiliser les éléments suivants:Impossible d'ajouter UIBarButtonItem à UINavigationBar indépendant

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissView)]; 
[header setItems:[NSArray arrayWithObjects:doneButton, nil] animated:NO]; 
[doneButton release]; 

Mon application se bloque et je trouve cela dans la console:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem setNavigationBar:]: unrecognized selector sent to instance 0x4b75c00'

apprécierait si quelqu'un pourrait s'il vous plaît indiquer ce que je fais mal ici .

Merci. Ricky.

Répondre

16

UINavigationBar accepte un tableau de UINavigationItem objets, dont chacun contient des propriétés à propos d'un niveau donné de la hiérarchie de navigation. Vous souhaitez probablement créer un nouveau UINavigationItem, puis définir sa propriété rightBarButtonItem sur votre bouton Terminé.

+0

Merci beaucoup pour cela! –

+0

Fonctionne toujours parfaitement avec iOS 7 merci! – user3344977

4

Il est peu probable que vous deviez créer un nouveau UINavigationItem comme la réponse indique actuellement. En revanche, si vous avez déjà un UINavigationBar initialisé à partir d'une plume qui contient également une vue, vous pouvez simplement ajouter votre UINavigationItem à la propriété topItem de votre UINavigationBar. Quelque chose comme ceci:

UIBarButtonItem *closeBtn = [[UIBarButtonItem alloc] initWithTitle:@"Close" 
                  style:UIBarButtonItemStyleBordered 
                  target:self 
                  action:@selector(closeBtnPressed)]; 
self.navigationBar.topItem.leftBarButtonItem = closeBtn; 
[closeBtn release];