Не удается добавить UIBarButtonItem в независимый UINavigationBar - PullRequest
8 голосов
/ 22 ноября 2010

Я программно добавляю UINavigationBar к UIView, и теперь мне нужно добавить к нему UIBarButtonItem.Я пытаюсь использовать следующее:

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

Мое приложение вылетает, и я нахожу это в консоли:

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

Буду признателен, если кто-то может пожелатьукажите, что я здесь делаю неправильно.

Спасибо.Рики.

Ответы [ 2 ]

16 голосов
/ 22 ноября 2010

UINavigationBar принимает массив UINavigationItem объектов, каждый из которых содержит свойства данного уровня иерархии навигации.Возможно, вы захотите создать новый UINavigationItem и затем установить его свойство rightBarButtonItem для кнопки Готово.

4 голосов
/ 25 мая 2011

Вряд ли вам нужно создавать новый UINavigationItem, как говорится в ответе. Напротив, если у вас уже есть UINavigationBar, инициализированный из кончика, который также содержит представление, вы можете просто добавить свой UINavigationItem в topItem свойство вашего UINavigationBar. Как то так:

UIBarButtonItem *closeBtn = [[UIBarButtonItem alloc] initWithTitle:@"Close" 
                                                             style:UIBarButtonItemStyleBordered 
                                                            target:self 
                                                            action:@selector(closeBtnPressed)];
self.navigationBar.topItem.leftBarButtonItem = closeBtn;
[closeBtn release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...