UIBarButtonItem: выбрал / отменил выбор элемента - PullRequest
1 голос
/ 14 февраля 2010

У меня есть любимое изображение для отображения на UIBarButtonItem на панели инструментов.

Как вы можете изменить его, если этот пункт не выбран / не выбран? нравится этот скриншот:

enter image description here

Спасибо!

Ответы [ 2 ]

3 голосов
/ 21 февраля 2010

Вы можете сделать два массива с UIBarButtonItems: один с первым изображением и один со вторым изображением Как это:

// array with unselected
UIBarButtonItem *unselectedItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_unselected.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(doStuff:)];
self.itemsWithUnselected = [NSArray arrayWithObject:unselectedItem]; // declared as NSArray*
[unselectedItem release];

// array with selected
UIBarButtonItem *selectedItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_selected.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(doStuff:)];
self.itemsWithSelected = [NSArray arrayWithObject:selectedItem]; // declared as NSArray*
[selectedItem release];

, а затем переключайтесь между двумя наборами элементов панели инструментов с помощью:

toolbar.items = self.itemsWithSelected; // or self.itemsWithUnselected

Если у вас на панели инструментов больше одной кнопки, просто добавьте остальные элементы в оба массива.

0 голосов
/ 02 сентября 2014
// First create UIButton object
UIButton *btnCustom = [UIButton buttonWithType:UIButtonTypeCustom];

// Set Frame because without frame your button can not be shown on navigation bar
[btnCustom setFrame:CGRectMake(0.0, 0.0, 20.0, 20.0)];

// Set unselected image
[btnCustom setImage:[UIImage imageNamed:@"YOUR_IMAGE_NAME_UNSELECTED"] forState:UIControlStateNormal];

// set selected image
[btnCustom setImage:[UIImage imageNamed:@"YOUR_IMAGE_NAME_SELECTED"] forState:UIControlStateSelected];

// set action method
[btnCustom addTarget:self action:@selector(btnCustom_click:) forControlEvents:UIControlEventTouchUpInside];


UIBarButtonItem *btnCustomBar = [[UIBarButtonItem alloc]initWithCustomView:btnCustom];

[self.navigationItem setRightBarButtonItem:btnCustomBar];

// action Method

- (IBAction)btnCustom_click:(id)sender
{
   if(![sender isSelected])
       [sender setSelected:YES];
   else
       [sender setSelected:NO];
}
...