Как скрыть / показать правую кнопку в панели навигации - PullRequest
38 голосов
/ 08 апреля 2011

Мне нужно скрыть правую кнопку на панели навигации, а затем показать ее после того, как пользователь выберет некоторые параметры.

К сожалению, следующее не работает:

NO GOOD: self.navigationItem.rightBarButtonItem.hidden = YES;  // FOO CODE

Есть ли способ?

Ответы [ 17 ]

1 голос
/ 28 октября 2015

Мое решение:

self.navigationItem.rightBarButtonItem.customView.hidden=NO;
1 голос
/ 20 февраля 2019

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

self.navigationItem.rightBarButtonItem = nil;

Предположим, если у вас есть кнопка с несколькими кнопками справа, например, предположим, что у вас есть два элемента кнопки панели (кнопка поиска и кнопка фильтра) с правой стороны вашего элемента навигации. Теперь правильные элементы панели кнопок:

self.navigationItem.rightBarButtonItems = [searchItem, filterItem]

и вам нужно скрыть только кнопку поиска, вы можете использовать, как,

self.navigationItem.rightBarButtonItems = [filterItem]

Теперь, что происходит, вы можете полностью скрыть кнопку поиска от элемента навигации, и элемент фильтра появляется на месте элемента поиска

0 голосов
/ 27 октября 2018

Сначала установите заголовок пустым, а после изменения просто установите снова.

0 голосов
/ 28 февраля 2017
  1. Предположим, что вы можете ссылаться на конкретную кнопку бара как переменную xxxButton

(пожалуйста, откройте Помощник редактора, Control + Перетащите кнопку xxx в класс YourViewController как выход "xxxButton").

или вы можете использовать что-то вроде let xxxButton = navigationBar.buttons[1]

  1. Скрыть xxxButton.customView = UIView() или же navigationItem.rightBarButtonItems?.remove(at: (navigationItem.rightBarButtonItems?.index(of:xxxButton)!)!)

  2. Показать xxxButton.customView = nil или же navigationItem.rightBarButtonItems?.insert(newElement: xxxButton, at:SOME_INDEX)

Надеюсь, полезно.

0 голосов
/ 19 сентября 2014

Показать:

//set navigationItem tint color white
self.navigationItem.rightBarButtonItem.tintColor = [UIColor whiteColor];

Hide:

//set navigationItem tint clear white
self.navigationItem.rightBarButtonItem.tintColor = [UIColor clearColor];
0 голосов
/ 18 мая 2019

Вы можете использовать ниже код:

    self.navigationItem.rightBarButtonItem?.image = nil
    self.navigationItem.rightBarButtonItem?.isEnabled = false
0 голосов
/ 23 февраля 2017

Спрятать:

if let topItem = self.navigationController?.navigationBar.topItem {
    topItem.rightBarButtonItem = nil
}
...