Как отключить UIBarButtonItem? - PullRequest
36 голосов
/ 24 сентября 2010

У меня есть UIBarButtonItem, который просто не хочет отключаться.Короткая версия: когда я звоню

[myBarButtonItem setEnabled:NO];

Ничего не происходит.

myBarButtonItem - это IBOutlet в myVIewController.myViewController был добавлен как объект к MainWindow в Интерфейсном Разработчике.Розетка myBarButtonItem подключена к BarButtonItem и имеет соответствующие установленные линии @syntesize и property.

@property (nonatomic, retain) IBOutlet UIBarButtonItem *myBarButtonItem;

В myViewController.m,

@synthesize myBarButtonItem;

Anyoneесть представление, почему вышеуказанный метод setEnabled не имеет никакого влияния?Спасибо!

ОБНОВЛЕНИЕ: Исправлено!Не знаю почему, но, видимо, розетка не была установлена.Я использовал мой делегат приложения в качестве родительского объекта для UIBarButtonItem, и все получилось.

Ответы [ 4 ]

74 голосов
/ 08 июня 2012

Вы можете отключить левую навигационную кнопку внутри UIViewController, например, без использования IBOutlet:

self.navigationItem.leftBarButtonItem.enabled = NO;

Чтобы отключить правую навигационную кнопку:

self.navigationItem.rightBarButtonItem.enabled = NO;

Swift3

self.navigationItem.rightBarButtonItem?.isEnabled = false
12 голосов
/ 24 сентября 2010

Если на вашей панели инструментов есть IBOutlet (и вы проверили, что он не ноль), попробуйте:

[ [ [ myToolBar items ] objectAtIndex: myBarButtonItemIndex ] setEnabled:(NO) ];
2 голосов
/ 11 февраля 2019

Я использовал другое решение (Swift 4.2) для моих rightBarButtonItems.

У меня было 3 кнопки, поэтому я использовал цикл for, а затем сделал расширение UINavigationItem, чтобы я мог использовать его во всем приложении.

extension UINavigationItem {
func setRightBarButtonItems(isEnabled:Bool){
    for button in self.rightBarButtonItems ?? [UIBarButtonItem()] {
        button.isEnabled = isEnabled
    }
}

Тогда я могу вызвать его из моего TableViewController

navigationItem.setRightBarButtonItems(isEnabled: false)
1 голос
/ 12 декабря 2015

В моем случае (Swift) я добавил 2 barButtonItems в виде массива - поэтому, чтобы отключить их, это помогло

    navigationItem.rightBarButtonItems?.first?.enabled = false
    navigationItem.rightBarButtonItems?.last?.enabled = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...