iPhone - UINavigationItem - кнопка возврата - PullRequest
3 голосов
/ 07 декабря 2010

Я в тупике.Я использую UINavigationController и в одном представлении пытаюсь скрыть кнопку возврата.Но когда я это делаю, она скрывает кнопку «Назад» и на следующем уровне просмотра.

В - (void)viewWillAppear:(BOOL)animated У меня есть:

[self.navigationItem setHidesBackButton:YES animated:NO];

А в - (void)viewWillDisappear:(BOOL)animated у меня есть:

[self.navigationItem setHidesBackButton:NO animated:NO];

Это просто заставляет кнопку возврата появляться перед тем, как она уходит (что, похоже, является правильной функциональностью этого вызова).Поэтому я устал вставлять

[self.navigationItem setHidesBackButton:NO animated:NO];

в - (void)viewWillAppear:(BOOL)animated следующего представления, и это все еще не работает.

Это немного сбивает с толку, поскольку self.navigationItem.backBarButtonItem является ссылкой накакова будет кнопка «Назад» этого вида, когда она находится под видом сверху ( ref ).Но self.navigationItem.hidesBackbutton показывает, отображается ли кнопка «Назад» в виде сверху ( ref ).Так у кого-нибудь есть идеи, почему бы скрыть кнопку «Назад» следующего вида?

Еще одна странная вещь - это работает, когда я перехожу на другой вид вниз.Для более наглядного представления, скажем, у меня есть следующие представления:

A > B > C > D

B - это представление, которое меня беспокоит.Я хочу скрыть кнопку «Назад», которая будет переходить к «А». Когда я это делаю, она также скрывает кнопку «Назад» на С.Но если я перейду к букве D, появится кнопка «Назад», и тогда все будет работать как надо.То есть я могу вернуться к C, затем к Back B. У кнопки B скрыта кнопка возврата, и если я вернусь в C, кнопка возврата отобразится, как и должно быть.

Есть идеи?

Ответы [ 3 ]

9 голосов
/ 07 декабря 2010

Кажется, есть какая-то ошибка, связанная с сокрытием и отображением кнопки "назад" при работе с UINavigationController. Проблема, похожая на вашу, заключается в том, что backButton NavigationController не отображается .

Я провел некоторое тестирование по этому поводу, и, хотя у меня нет объяснения, вот несколько советов, которые могут вам помочь.

  • звонить только на setHidesBackButton:animated: в viewDidAppear: и , а не в viewWillAppear:
  • Не используйте self.navigationItem.hidesBackButton.
4 голосов
/ 09 марта 2013

Чтобы обойти эту глупую ошибку, я вообще не реализовал setHidesBackButton, но в viewDidLoad я поставил следующее:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];
1 голос
/ 07 декабря 2010

Полагаю, вы знаете, что скрытие кнопки «назад» не мешает пользователю нажимать на нее?

Чтобы предотвратить щелчок, вы должны установить его как ноль.* Затем вы можете создать новую кнопку "назад" в методе "B" viewWillAppear.

...