UIToolBar - кнопки отключения
В моем приложении у меня есть панель инструментов, и в какой-то момент я хочу отключить или включить некоторые кнопки. Какой самый простой способ сделать это? Как я могу получить доступ к элементу свойств UIToolbar?
Вот мой код:
-(void)addToolbar {
NSMutableArray *buttons = [[NSMutableArray alloc] init];
//Define space
UIBarButtonItem *flexibleSpaceItem;
flexibleSpaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target:nil action:NULL];
//Add "new" button
UIBarButtonItem *newButton = [[UIBarButtonItem alloc]
initWithTitle:@"New" style:UIBarButtonItemStyleBordered target:self action:@selector(new_clicked)];
[buttons addObject:newButton];
[newButton release];
//Add space
[buttons addObject:flexibleSpaceItem];
//Add "make active" button
UIBarButtonItem *activeButton = [[UIBarButtonItem alloc]
initWithTitle:@"Make Active" style:UIBarButtonItemStyleBordered target:self action:@selector(make_active_clicked)];
[buttons addObject:activeButton];
[activeButton release];
[buttons addObject:flexibleSpaceItem];
//Add "edit" button
UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(edit_clicked)];
[buttons addObject:editButton];
[editButton release];
[flexibleSpaceItem release];
[toolBar setItems:buttons];
[buttons release];
}
Спасибо заранее.
Ответы
Ответ 1
Самый простой способ - сохранить ссылку на UIBarButtonItem
как переменную экземпляра.
# header file
UIBarButtonItem *editButton;
Затем ваш код станет
# .m file
editButton = [[UIBarButtonItem alloc]
initWithTitle:@"Edit"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(edit_clicked)];
[buttons addObject:editbutton];
Теперь в любом месте любого метода, отключение кнопки так же просто, как:
editButton.enabled = NO;
Также dont release
это немедленно, так как теперь этому классу принадлежит объект кнопки. Таким образом, release
он используется в dealloc
.
Ответ 2
Быстрое перечисление на помощь!
- (void) setToolbarButtonsEnabled:(BOOL)enabled
{
for (UIBarButtonItem *item in self.toolbarItems)
{
item.enabled = !enabled;
}
}