12

Кто-нибудь знает, как скрыть rightBarButtonItemUINavigationController? В моем приложении у меня есть кнопка редактирования как rightBarButtonItemUINavigationController. Я хочу скрыть это? UIBarButton`, когда некоторые операции выполняются.Спрятать rightBarButtonItem навигационного контроллера

+0

'self.navigationItem.rightBarButtonItems [1] setEnabled: NO];' если у вас есть массив, например, если вы используете гибкое пространство. –

ответ

11

Попробуйте

self.navigationItem.rightBarButtonItem = nil; 

Если вы хотите его обратно, хотя вам придется создать экземпляр кнопка IE

UIBarButtonItem *rightBarButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
               target:self 
               action:@selector(searchBar:)]; 
self.navigationItem.rightBarButtonItem = rightBarButton; 
[rightBarButton release]; 
+1

Что делать, если я не хочу воссоздать объект? например, я хочу скрыть rightBarButton к широкому кадру поискаBar на titleView навигацииBar. Я имею в виду, что скрытие возможно путем изменения собственности или чего-то еще? –

+0

, если вы хотите подкласс UINavigationController. вы можете сделать: self.topViewController.navigationItem.rightBarButtonItem = rightBarButton; self - ваш пользовательский класс UINavigationController –

15

Чтобы скрыть правую кнопку: self.navigationItem.rightBarButtonItem = nil;

Теперь, чтобы показать, что:

  1. Если вы настроили правую кнопку в своем контроллере просмотра, назначив ее self.editButtonItem, просто добавьте ее снова, чтобы показать ее:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. Если вы установили правую кнопку в контроллере просмотра, выделив и запустив UIBarButtonItem, просто сохраните ссылку на UIBarButtonItem в своем контроллере просмотра и назначьте его снова, когда вам нужно его показать.

+0

Я попытался назначить rightBarButtonItem на nil в Objective C, это не работает для меня –

10

Если вам нужно, чтобы скрыть/показать кнопку, основываясь на некоторых условиях, попробуйте следующее:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @""; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
} else { 
    self.navigationItem.rightBarButtonItem.title = @"my button title"; 
    self.navigationItem.rightBarButtonItem.enabled = YES; 
} 

Таким образом, вы не должны сохранить ссылку на кнопку в свойстве или беспокоиться о подключении действия к новой кнопке.

Смежные вопросы