Ответ 1
Это работает, я пробовал это сам
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
Я добавил элемент BarButton
слева от nav.bar
через Interface Builder и в коде, который я хочу, чтобы это отображалось только в режиме редактирования табличного вида. Но я не нашел скрытого свойства, чтобы установить leftBarButtonItem
(например: self.navigationItem.leftBarButtonItem.hidden = YES
).
Я могу установить только свойство enabled
. Кто-нибудь знает, как контролировать свойство hide и show leftBarButtonItem
, пожалуйста, помогите.
Это работает, я пробовал это сам
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
Я уверен, что единственный способ "спрятаться" - это выпустить его.
self.navigationItem.leftBarButtonItem = nil;
Хотя это не идеальный ответ на ваш вопрос, так как это в основном избавляется от вашей кнопки, а не скрывает ее. Вам придется либо воссоздать его, либо сохранить исходную кнопку, и просто вернуть leftBarButtonItem обратно в свой UIBarButtonItem.
Вы можете использовать
// Hide
self.navigationItem.leftBarButtonItem = nil;
// Show
self.navigationItem.leftBarButtonItem = self.myBarButtonItem
Ключ должен убедиться, что у вас есть ссылка strong на элемент кнопки, прежде чем налить leftBarButtonItem
.
@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem;
Я только что создал свою собственную функцию "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
Ничего в документации, чтобы предлагать элементы бара иметь скрытое свойство.
Почему бы не установить
self.navigationItem.leftBarButtonItem = nil;
когда пользователь не редактирует, затем установите
self.navigationItem.leftBarButtonItem = whateverBarButtonItem;
когда пользователь редактирует? Это требует либо повторного создания кнопки каждый раз, либо сохранения ее в течение всего жизненного цикла представления. Ничего ужасного, но нет, не так просто, как свойство .hidden.
Вы можете использовать
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
поскольку нет другого способа скрыть это. поэтому просто отключите его.
Чтобы скрыть/отключить
[self.navigationItem.leftBarButtonItem setEnabled:FALSE];
Чтобы показать/включить
[self.navigationItem.leftBarButtonItem setEnabled:TRUE];
Ну, сделав это nil, это был не вариант, потому что я хотел показать его снова и не хотел снова создавать кнопку.
так что я сделал
UIBarButtonItem *barButton = (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem;
barButton.customView.hidden = true;//Hide
barButton.customView.hidden = false;//Show
Работает для меня. (мой leftBarButtonItem был создан с помощью customView)
Надеюсь, что это поможет.
Это решение работает для меня
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
У меня есть легкая функция, чтобы сделать это.
У меня есть такая навигация.
Он поставляется с интерфейсом 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 по мере необходимости. Надежда на помощь:]