Недавно я столкнулся с той же проблемой и решил ее (благодаря Эрику Б., ваш ответ вдохновил меня! К сожалению, я пока не могу проголосовать за ваш ответ)
Я думаю, что моя правая кнопка не может исчезнуть, потому что я вызвал ее в функции viewWillAppear
, и в этой функции self
не относится к текущей UIViewController
.
Это сработало для меня, вместо того, чтобы установить кнопку в viewWillAppear
, я установил ее в функции navigationController:willShowViewController:animated:
на previous UIViewController
.
Например, я звоню SecondViewController
из FirstViewController
и хочу скрыть правую кнопку в SecondViewController
, введите это в FirstViewController.m
:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[SecondViewController class]]) {
[viewController.navigationItem setRightBarButtonItem:nil];
}
}