2010-11-22 15 views
8

Program dodaje UINavigationBar do interfejsu UIView, a teraz należy dodać do niego element UIBarButtonItem. Próbuję użyć następujących:Nie można dodać obiektu UIBarButtonItem do niezależnego paska UINavigationBar

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

Moje awarii aplikacji i znajdę to w konsoli:

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

uprzejmie go jeśli ktoś mógłby proszę zwrócić uwagę na to, co robię nieprawidłowo tutaj .

Dzięki. Ricky.

Odpowiedz

16

UINavigationBar przyjmuje tablicę obiektów UINavigationItem, z których każda zawiera właściwości dotyczące danego poziomu hierarchii nawigacji. Prawdopodobnie chcesz utworzyć nowy UINavigationItem, a następnie ustawić jego właściwość rightBarButtonItem na przycisk Gotowe.

+0

Dzięki za to mnóstwo! –

+0

Nadal działa idealnie z iOS 7 dziękuję! – user3344977

4

Jest mało prawdopodobne, aby utworzyć nową UINavigationItem, zgodnie z obecną odpowiedzią. W przeciwieństwie do tego, jeśli masz już zainicjowaną UINavigationBar ze stalówki, która zawiera także widok, możesz po prostu dodać swoją UINavigationItem do właściwości topItem swojej właściwości swojej UINavigationBar. Coś takiego:

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