2010-11-22 2 views
8

Aggiungo programmaticamente UINavigationBar a un UIView e ora è necessario aggiungere un UIBarButtonItem ad esso. Sto cercando di utilizzare i seguenti:Impossibile aggiungere UIBarButtonItem a UINavigationBar indipendente

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

mia app crash e ho trovato questo nella console:

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

sarei grato se qualcuno potesse si prega di notare che ci faccio in modo errato qui .

Grazie. Ricky.

risposta

16

UINavigationBar accetta un array di oggetti UINavigationItem, ognuno dei quali contiene proprietà relative a un determinato livello della gerarchia di navigazione. Probabilmente vuoi creare un nuovo UINavigationItem e quindi impostare la proprietà rightBarButtonItem sul pulsante Fine.

+0

Grazie mille per quello! –

+0

Ancora funziona perfettamente con iOS 7 grazie! – user3344977

4

È improbabile che sia necessario creare un nuovo UINavigationItem come indica la risposta. Al contrario, se hai già un UINavigationBar inizializzato da un pennino che contiene anche una vista, puoi semplicemente aggiungere il tuo UINavigationItem alla proprietà topItem del tuo UINavigationBar. Qualcosa del genere:

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