iPhone-UINavigationItem-скрытие кнопки Назад


Я в тупике. Я использую 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-это точка зрения, которая меня беспокоит. Я хочу скрыть кнопку Назад, которая будет идти в A. Когда я это делаю, она также скрывает кнопку назад на C. Но если я дойду до D, появится кнопка назад, и тогда все будет действовать так, как должно.- То есть я могу вернуться в "С", а потом обратно в "Б", где скрыта кнопка "назад", и если я вернусь в "с", кнопка "Назад" появится, как и должна.

Есть идеи?

3 3

3 ответа:

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

Я провел некоторые тесты по этому поводу, и хотя у меня нет объяснений, вот некоторые предложения, которые могут вам помочь.
  • звоните только setHidesBackButton:animated: в viewDidAppear: и Не в viewWillAppear:
  • Не используйте self.navigationItem.hidesBackButton нигде.

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

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];

Я думаю, вы знаете, что скрытие кнопки назад не мешает пользователю нажимать на нее?

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

 self.navigationItem.leftBarButtomItem = nil;

Затем вы можете создать новую кнопку Назад в методе"B" viewWillAppear.