У меня есть любимое изображение для отображения на панели UIBarButtonItem
.UIBarButtonItem: selected/unselected a item
Как это сделать, чтобы изменить его, если этот элемент не выбран или выбран? как этот скриншот:
Спасибо!
У меня есть любимое изображение для отображения на панели UIBarButtonItem
.UIBarButtonItem: selected/unselected a item
Как это сделать, чтобы изменить его, если этот элемент не выбран или выбран? как этот скриншот:
Спасибо!
Вы можете создать два массива с 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
Если у вас есть больше, чем просто одной кнопки на панели инструментов, то просто добавьте остальные элементы в оба массива.
// 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];
}