Подтвердить что ты не робот

Скрыть UIToolbar UIBarButtonItems

У меня есть UIToolbar, который я настраивал с помощью IB с тремя кнопками, слева, в середине и вправо. В некоторых ситуациях я бы не хотел отображать среднюю кнопку. Кто-нибудь знает способ скрыть конкретную кнопку внутри UIToolBar? Не существует свойства hide, все, что я могу найти, является setEnable, но это все еще оставляет кнопку, заставляя пользователей задаваться вопросом, какова ее цель. Я хотел бы отображать его только в ситуациях, когда он действительно используется.

Спасибо заранее!

4b9b3361

Ответ 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];