UIBarButtonItem программно - PullRequest
2 голосов
/ 23 июня 2011

Я попытался определить UIBarButtonItem программно.он появился в navBar, как и ожидалось.но оно не вызывало действие до тех пор, пока я не подошел к IB и не перетащил элемент кнопки панели в объект контроллера навигации и назначил его с действием didTapSearch.

Я думал, что можно определять UIBarButtonItems только программно, без какой-либо дополнительной работы IB.или это возможно только в том случае, если навигационный контроллер и / или контроллер представления также были созданы программно?

или я пропустил повторное назначение делегата в моем коде?

UIBarButtonItem *searchBtn = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(didTapSearch:)] autorelease];
self.navigationItem.rightBarButtonItem = searchBtn;

Ответы [ 3 ]

1 голос
/ 23 июня 2011

попробуйте вместо этого в заголовке объявите barButtonItem

proximityButton= [[UIBarButtonItem alloc] 
                  initWithTitle:@"Nearby Locations"                                            
                  style:UIBarButtonItemStyleBordered 
                  target:self 
                  action:@selector(addToProximity)];
self.navigationItem.leftBarButtonItem = proximityButton;

и вы можете удалить часть (: id) действия

0 голосов
/ 27 ноября 2013

Добавьте цвет.

searchBtn.tintColor = [UIColor blackColor];
0 голосов
/ 23 июня 2011

Вы можете указать метод action: программно, как вы делали это с помощью UIBarButtonItem.

Реализация действия в классе объекта, который вы указали с помощью target:.

-(void) didTapSearch:(id) sender
{
  UIBarButtonItem *searchBtn = (UIBarButtonItem*)sender;
}
...