Скрыть элемент кнопки rightNavigationBar в iPhone

#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];