Как скрыть элемент правой кнопки UInavigationBar? - PullRequest
5 голосов
/ 13 мая 2011

Я добавил информационную кнопку на панель навигации, используя следующий код:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
    [infoButton addTarget:self action:@selector(showImage:) 
         forControlEvents:UIControlEventTouchUpInside]; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

Теперь я хочу спрятать эту кнопку в какой-то части кода, основываясь на некоторых условиях. Но я не нашел ни одного свойства скрытия для правой кнопки на панели навигации?

Ответы [ 4 ]

13 голосов
/ 13 мая 2011

Чтобы скрыть, попробуйте присвоить nil вашему rightBarButtonItem, как показано ниже.

self.navigationItem.rightBarButtonItem = nil ;
10 голосов
/ 13 мая 2011

Лучший вариант - использовать buttonItem.enabled = NO, чтобы указать, что функциональность в данный момент недоступна.В большинстве случаев это должно быть правильным поведением.

Однако, если вы собираетесь заставить его исчезнуть, лучшим способом было бы сохранить ссылку на кнопку панели.Установите для rightBarButtonItem значение nil, если вы хотите, чтобы он исчез, и установите для него сохраненную ссылку, когда вы хотите, чтобы он отображался.

1 голос
/ 18 февраля 2017

Если вы просто хотите скрыть это визуально:

Swift 3:

self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clear
self.navigationItem.rightBarButtonItem?.isEnabled = false
1 голос
/ 18 апреля 2014

Если у вас есть несколько UIBarButtonItems и вы просто хотите удалить один, вы можете сделать это:

NSMutableArray *barButtonItems = [self.toobbar.items mutableCopy];
[barButtonItems removeObject:self.buttonToRemove];
[self.toolbar setItems:[barButtonItems copy] animated:NO];
...