Этот ответ относится к текстовым UIBarButtonItems, однако та же концепция может быть применена и к другим типам кнопок. Обратите внимание, что это позволит скрыть и , чтобы показать элемент снова. Многие из приведенных выше ответов (например, те, которые устанавливают значение кнопки на ноль, не позволяют повторно отображать кнопку, если это необходимо).
TL; DR:
if (shouldShowMyBarButtonItem) {
self.myBarButtonItem.title = nil;
self.myBarButtonItem.action = nil;
} else if (!shouldShowMyBarButtonItem) {
self.myBarButtonItem.title = @"Title";
self.myBarButtonItem.action = @selector(mySelector:);
}
Длинная версия:
UIBarButtonItem, который я пытался скрыть, находится на панели UIToolbar, а не на UINavigationBar, поэтому все предложения, которые обращаются к левому (или правому) свойству barButtonItem элемента навигации, не работают для меня. Также, как указано выше, я хотел бы снова показать кнопку, когда обстоятельства изменятся.
Предложение Майкла оказалось наиболее близким к работе, однако, по крайней мере, с iOS 7 все еще оставалась небольшая полоска очень отображаемой кнопки, которую можно было нажать. В моем приложении нажатие на элемент, когда он не должен быть доступен, было недопустимым. Приведенный выше код скрывает и, что особенно важно, деактивирует кнопку.
Я вызываю приведенный выше код в частном методе обновления, который вызывается, когда происходит пользовательское событие.