9

При отключении кнопки правой панели навигации она не изменяет свой цвет, чтобы сигнализировать об отключенном состоянии для пользователя.Отключение кнопки панели навигации Пункт

Он остается «подсвеченным», не-серым.

Я настроил кнопку в раскадровке следующим образом:

enter image description here

self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; 

Что мне нужно сделать, чтобы изменить состояние button`s визуально тоже?

Спасибо!

+1

Это пользовательская кнопка? Настройка, разрешенная для ЛОЖЬ, должна сгладить обычный UIBarButtonItem – ChrisH

+0

@ChrisH, я обновил свой вопрос. – AlexR

+0

Что произойдет, если вы вместо этого добавите кнопку Готово? – ChrisH

ответ

0

Вы можете попробовать вручную изменить оттенок цвета, как это:

self.navigationItem.rightBarButtonItem.tintColor = [UIColor grayColor]; 

Это непроверенный код, но он должен работать. Кроме того, не забудьте изменить его, когда он снова включен.

+0

Должно быть '[UIColor grayColor]' –

4

Кредит Vijay-Apple-Dev.blogspo для этого ответа.

self.navigationItem.leftBarButtonItem.enabled = NO; 
self.navigationItem.rightBarButtonItem.enabled = NO; 

Это автоматически кажется серым от кнопок, а также отключает их.

Примечание: Предположение в вопросе, что self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; Работы кажутся неправильными, после того, как я пробовал его в своем коде, я обнаружил, что это не повлияло.

Снова благодаря Виджай отметив, что это может быть лучше использовать:

self.navigationItem.hidesBackButton = YES; 

В компании Apple не любит отключить кнопку назад.

Лично я собираюсь отключить верхнюю правую кнопку и скрыть кнопку «Назад», чтобы пользователь не нажал их, а затем включите их снова, когда я выберу.

Ссылка на этот вопрос here

Этот ответ размещен на полноту и поэтому будущим пользователям не нужно продолжать поиск мимо этой страницы.

1

попробовать что-то вроде этого:

[[self.navigationItem.rightBarButtonItems objectAtIndex:0] setEnabled:NO]; 
5

Ни один из соответствующих ответов были в состоянии произвести результат, который я искал - но я был в состоянии решить эту проблему, установив атрибуты текста на мои кнопки навигации:

[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:enabledColor} forState:UIControlStateNormal]; 
[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:disabledColor} forState:UIControlStateDisabled]; 

Тогда все, что мне нужно сделать, это следующий и interactability пользователя и цвет меняется автоматически:

navButton.enabled = YES; // or NO 
+0

Мне нравится, что я просто столкнулся с этой проблемой через месяц после того, как разместил решение, и мое собственное решение ответило на мой вопрос. – Mike

0

Обновить его до:

self.navigationItem.leftBarButtonItem?.isEnabled = true