#iphone #objective-c #navigationbar
#iPhone #objective-c #панель навигации
Вопрос:
Я хочу скрыть элемент rightNavigationBarItem при загрузке моего ViewController. Как это возможно? Я пробовал этот код, но он не работает.
self.navigationItem.rightBarButtonItem = nil;
Комментарии:
1. Где находятся другие места, которые вы устанавливаете
rightBarButtonItem
? Вероятно, он будет добавлен снова к моменту отображения view.2. на самом деле я создал класс tabbar, который наследует от uitabbarcontroller.in в сам этот класс я добавил элемент кнопки right bar. но я установил rightbarbutton только для одного класса, но когда я запускаю свою программу, rightbarbutton устанавливается и для всех других классов. Спасибо
3. Хм .. Так ты создаешь подкласс
UITabBarController
илиUITabBar
? И ты вставилTabBarController
вUINavigationController
?4. я создаю подкласс UITabBarController. Нет, я не помещаю tabbarcontroller в navigationcontroller
5. Почему все задаются вопросом, почему он хочет это сделать? У меня было точно такое же требование. При работе с другими людьми / компаниями вы не всегда можете контролировать дизайн.
Ответ №1:
В Xcode 4. использование этого не будет работать;
self.navigationItem.leftBarButtonItem.enabled=NO;
self.navigationItem.leftBarButtonItem=nil;
self.navigationController.navigationBar.backItem.hidesBackButton=YES;
[self.navigationItem.leftBarButtonItem release];
Мне действительно интересно, почему вы упомянули rightBarButtonItem? При навигации изменяется элемент leftBarButtonItem.
Что работает;
1) self.title =@"";
при обнулении заголовка экрана, когда навигационный контроллер помещает подробный вид в стек, кнопка возврата не создается.
2) замена leftBarButtonItem
на что-то другое изменяет кнопку, но не решает вашу проблему.
3) Альтернатива. Скрыть панель навигации; [self.navigationController setNavigationBarHidden:YES animated:YES];
Комментарии:
1. @Специально: это неверно. Кроме того, он спросил о кнопке правой панели, и ваше предположение, что он не знает, какую кнопку он хочет скрыть, является … странным.
2. @HenrikErlandsson — потому что при загрузке контроллера просмотра. Кнопки слева или справа нет, если только она не является частью стека навигации. Вопрос предполагает, что у него возникли проблемы с левой кнопкой. Возможно, следует внести правку в исходный вопрос. Я прочитал вопрос как нажатие стека навигации, что означало бы левую кнопку.
Ответ №2:
Привет, он не скрывает, а отключает его
self.navigationItem.rightBarButtonItem.enabled = NO;
Ответ №3:
поместите эту функцию во все классы —
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.navigationItem.rightBarButtonItem = nil;
} return self;
}
Ответ №4:
Прежде всего, вы не должны создавать подкласс UITabBarController, как довольно четко указано в документации. Об этом упоминается в самом начале обзора.
Предполагая, что одна из вкладок указывает на UINavigationController
. Вы действительно должны получить прямой доступ к контроллеру просмотра и сделать что-то вроде viewController.navigationItem.rightBarButtonItem = nil;
.
Ответ №5:
Вы должны установить rightBarButtonItem равным нулю, прежде чем вставлять свой контроллер в стек навигации.
Ответ №6:
Прямое скрытие правой кнопки не работает, ниже приведен трюк для этого.
Примечание: Это решение работает только для iOS 7.x.
//To Hide
self.navigationItem.rightBarButtonItem.enabled = NO;
self.navigationItem.rightBarButtonItem.title = @"";
//To Show
self.navigationItem.rightBarButtonItem.enabled = YES;
self.navigationItem.rightBarButtonItem.title = @"DONE";
Ответ №7:
Я думаю, что лучший способ — использовать этот пример кода строки:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:nil style:UIBarButtonItemStylePlain target:nil action:nil];