Скрытие кнопки UINavigationItem bar

Я добавил элемент BarButton слева от nav.bar через Interface Builder и в коде, который я хочу, чтобы это отображалось только в режиме редактирования табличного вида. Но я не нашел скрытого свойства, чтобы установить leftBarButtonItem (например: self.navigationItem.leftBarButtonItem.hidden = YES).

Я могу установить только свойство enabled. Кто-нибудь знает, как контролировать свойство hide и show leftBarButtonItem, пожалуйста, помогите.

Ответы

Ответ 1

Это работает, я пробовал это сам

self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;      

Ответ 2

Я уверен, что единственный способ "спрятаться" - это выпустить его.

self.navigationItem.leftBarButtonItem = nil;

Хотя это не идеальный ответ на ваш вопрос, так как это в основном избавляется от вашей кнопки, а не скрывает ее. Вам придется либо воссоздать его, либо сохранить исходную кнопку, и просто вернуть leftBarButtonItem обратно в свой UIBarButtonItem.

Ответ 3

Вы можете использовать

// Hide
self.navigationItem.leftBarButtonItem = nil;

// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem

Ключ должен убедиться, что у вас есть ссылка strong на элемент кнопки, прежде чем налить leftBarButtonItem.

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

Ответ 4

Я только что создал свою собственную функцию "hide" ниже:

- (void)hideClearButton:(BOOL)hide {

    if (hide) {
        self.navigationItem.leftBarButtonItem = nil;
    }
    else {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
                                                 initWithTitle:NSLocalizedString(@"Clear", @"Recents")
                                                 style:UIBarButtonItemStylePlain
                                                 target:self action:@selector(clearAll:)];

    }
}

Вы можете просто называть его следующим:

[self hideClearButton:YES]; //hide it

или

[self hideClearButton:NO];  //show it

Ответ 5

Ничего в документации, чтобы предлагать элементы бара иметь скрытое свойство.

Почему бы не установить

self.navigationItem.leftBarButtonItem = nil; 

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

self.navigationItem.leftBarButtonItem = whateverBarButtonItem; 

когда пользователь редактирует? Это требует либо повторного создания кнопки каждый раз, либо сохранения ее в течение всего жизненного цикла представления. Ничего ужасного, но нет, не так просто, как свойство .hidden.

Ответ 6

Вы можете использовать

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];

поскольку нет другого способа скрыть это. поэтому просто отключите его.

Ответ 7

Чтобы скрыть/отключить

[self.navigationItem.leftBarButtonItem setEnabled:FALSE];

Чтобы показать/включить

[self.navigationItem.leftBarButtonItem setEnabled:TRUE];

Ответ 8

Ну, сделав это nil, это был не вариант, потому что я хотел показать его снова и не хотел снова создавать кнопку.

так что я сделал

 UIBarButtonItem *barButton =  (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
 barButton.customView.hidden = true;//Hide
 barButton.customView.hidden = false;//Show

Работает для меня. (мой leftBarButtonItem был создан с помощью customView)

Надеюсь, что это поможет.

Ответ 9

Это решение работает для меня

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

Ответ 10

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

@IBOutlet weak var memberBtn: UIBarButtonItem!

вы можете скрыть/показать его:

func hideMemberBtn() {
    memberBtn.isEnabled = false
    memberBtn.tintColor = UIColor.clear
}
func showMemberBtn() {
    memberBtn.isEnabled = true
    memberBtn.tintColor = UIColor.white
}

Это легко, но это работает для меня. Вы можете изменить tintColor по мере необходимости. Надежда на помощь:]