Мне нужно было показать / скрыть одну из двух кнопок исключительно. Я создал категорию в NSMutableArray, удалил обе кнопки, если они находятся в массиве, а затем добавил каждую, если необходимо. Возможно, вам понадобятся кнопки в качестве свойств вашего ViewController.
NSMutableArray + Extensions
@implementation NSMutableArray (Extensions)
-(bool)removeItemIfExists:(id)item {
bool wasRemoved=false;
for (int i=self.count-1;i>0;i--) {
if([self objectAtIndex:i] == item){
[self removeObjectAtIndex:i];
wasRemoved = true;
}
}
return wasRemoved;
}
@end
Позвоните, используя:
NSMutableArray *newLeftItems = [self.navigationItem.leftBarButtonItems mutableCopy];
[newLeftItems removeItemIfExists:btnOne];
[newLeftItems removeItemIfExists:btnTwo];
if(someCondition) {
[newLeftItems insertObject:btnOne atIndex:1];
} else {
[newLeftItems insertObject:btnTwo atIndex:1];
}
[self.navigationItem setLeftBarButtonItems:newLeftItems animated:true];