2010-02-14 3 views
1

У меня есть любимое изображение для отображения на панели UIBarButtonItem.UIBarButtonItem: selected/unselected a item

Как это сделать, чтобы изменить его, если этот элемент не выбран или выбран? как этот скриншот:

enter image description here

Спасибо!

ответ

3

Вы можете создать два массива с 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 

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

-1
// 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]; 
}