Я пытаюсь настроить панель навигации, добавив пользовательскую кнопку вправоBarButtonItem. Создание одного довольно прямолинейно.Добавление действия и целевого объекта в пользовательскую панель навигации BarButtonItem?
UIImage *myImage = [UIImage imageNamed:@"menu-icon.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setFrame:CGRectMake(0, 0, myImage.size.width, myImage.size.height)];
[myButton setBackgroundImage:myImage forState:UIControlStateNormal];
UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[navItem setLeftBarButtonItem:myButtonItem animated:YES];
Выглядит хорошо, за исключением того, что теперь я не могу установить свойства цели или действия. Следующий код ничего не делает:
myButtonItem.target = myTarget;
myButtonItem.action = @selector(myButtonAction);
я обнаружил, что причина, это не работает, потому что я инициализирован UIBarButtonItem с -initWithCustomView. Документация яблок говорит:
Элемент панели бара, созданный этим методом, не вызывает метод действия своей цели в ответ на взаимодействие пользователя. Вместо этого элемент кнопки панели ожидает, что указанный пользовательский вид обработает любые пользовательские взаимодействия и предоставит соответствующий ответ.
Я немного смущен тем, что именно означает яблоко. Должен ли я создавать пользовательский элемент управления или что-то еще? Я еще этого не сделал, и я не знаю, с чего начать.
Есть ли у кого-нибудь предложения по тому, как это сделать или альтернативный способ настройки пользовательской кнопки панели навигации?
ОТВЕТНЫЙ -------------------------------------------- --------------
Просто пришлось добавить этот метод к UIButton:
[myButton addTarget:myTarget action:@selector(myButtonAction) forControlEvents:UIControlEventTouchUpInside];
Спасибо, не понял, что все было так просто. – DJSK