Подтвердить что ты не робот

Добавление массива UIButtons к navigationItem.rightBarButtonItem приводит к NSInvalidArgumentException

Я пытаюсь добавить массив из двух кнопок справа от панели навигации, но я получаю исключение, когда запускаю код.

'NSInvalidArgumentException', причина: '- [UIButton isSystemItem]: непризнанный селектор, отправленный в экземпляр

Мой код довольно прост:

   UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,100,45)];
   label.backgroundColor=[UIColor clearColor];
   label.text = @"Test 2 Buttons";

   UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
   button1.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

   UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
   button2.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

   NSArray *rightBarButtons = [[NSArray alloc] initWithObjects:button2, button1, nil];


   UINavigationItem* navItem = self.navigationItem;
   navItem.titleView = label;
   navItem.rightBarButtonItems = rightBarButtons;
   [rightBarButtons release];
   [label release];

Я запускаю его на симуляторе iPhone 5.0. Есть идеи?? Заранее спасибо. Аль

4b9b3361

Ответ 1

Вы не можете напрямую добавить UIButtons. Сначала вам нужно обернуть их как UIBarButtonItems - предупреждение о компиляторе отсутствует, поскольку вы передаете массив только.

Создайте элементы панели с помощью initWithCustomView:, перейдя в свою кнопку как пользовательское представление. Или, в зависимости от того, что находится в ваших кнопках, создайте элементы панели.

Ответ 2

Трюк здесь заключается в использовании объектов UIBarButtonItem вместо объектов UIButton. UIBarButtonItems могут быть созданы из UIButton, например:

UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithCustomView:uibuttonObject];

Однако использование UIButtons на панели навигации, как правило, плохое, когда UIBarButtonItems должны выглядеть красиво. Рассмотрите возможность посещения Справочника класса UIBarButtonItem.

Ответ 3

Вы должны дать ему массив объектов UIBarButtonItem, а не объекты UIButton. Обратите внимание: UIBarButtonItem не наследует ни UIButton, ни UIView.