Скрыть UIToolbar UIBarButtonItems
У меня есть UIToolbar, который я настраивал с помощью IB с тремя кнопками, слева, в середине и вправо. В некоторых ситуациях я бы не хотел отображать среднюю кнопку. Кто-нибудь знает способ скрыть конкретную кнопку внутри UIToolBar? Не существует свойства hide, все, что я могу найти, является setEnable, но это все еще оставляет кнопку, заставляя пользователей задаваться вопросом, какова ее цель. Я хотел бы отображать его только в ситуациях, когда он действительно используется.
Спасибо заранее!
Ответы
Ответ 1
Reset элементы:
-(void)setItems:(NSArray *)items animated:(BOOL)animated
Вы можете получить текущие элементы, используя свойство items, затем просто удалите тот, который вы не хотите показывать и передавать в новом NSArray
.
Как вы можете видеть, вы также можете анимировать его, чтобы он дал понять пользователю.
Ответ 2
Вместо того, чтобы гадать в индексе, я добавил IBOutlet для UIBarButtonItem, а затем удалил его по имени:
NSMutableArray *toolBarButtons = [self._toolbar.items mutableCopy];
[toolBarButtons removeObject:self._selectButton]; // right button
[self._toolbar setItems:toolBarButtons];
И, конечно, это помогает подключить выходы в дизайнере:)
Ответ 3
Вот как я это сделал.. слишком много головной боли, но лучше всего я мог придумать:
NSArray *toolBarArray = toolBar.items;
NSMutableArray *newToolBarArray = [NSMutableArray arrayWithArray:toolBarArray];
[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
//remove whatever buttons you want to.
NSArray *finalTabBarArray =[[NSArray alloc] initWithObjects:newToolBarArray, nil];
[toolBar setItems:[finalTabBarArray objectAtIndex:0] animated:NO];
Ответ 4
Это не работает здесь, потому что массив, который вы отправляете с помощью setItem, не соответствует ожидаемой функции.
Мне пришлось заменить строку:
NSArray *finalTabBarArray = [[NSArray alloc] initWithObjects:newToolBarArray, nil];
с этим:
NSArray *finalTabBarArray = [newToolBarArray copy];
Затем он отлично работает.
Ответ 5
Я знаю, что это довольно старая нить, но для тех, кто ищет эту страницу для решения, здесь вы идете:
С помощью iOS7 вы можете использовать этот подход, чтобы показать/скрыть кнопку на панели инструментов:
if(// your code Condition)
{ self.toolbarBtn1.enabled = YES;
self.toolbarBtn1.tintColor = nil; }
else
{ self.toolbarBtn1.enabled = NO;
self.toolbarBtn1.tintColor = [UIColor clearColor]; }
Ответ 6
Ответ Mohit - это тот, который я использовал, но вам не нужно специально создавать NSArray, который настраивается панелью инструментов. Вы можете просто установить массив элементов как NSMutableArray. Нет реального преимущества, которое я знаю, но его несколько строк меньше кода. И таким образом вы можете взять массив и переместить объекты UIButton, как и любой другой массив с объектами, а затем просто reset панель инструментов с этим изменяемым массивом.
[newToolBarArray removeObjectAtIndex:2];
[newToolBarArray removeObjectAtIndex:1];
[toolBar setItems:newToolBarArray];