Кнопка Назад исчезает после нажатия двух представлений с помощью UINavigationController - PullRequest
3 голосов
/ 05 марта 2012

В настоящее время я занимаюсь разработкой приложения с использованием UINavigationController. Я установил корневой контроллер представления в ViewController1, а затем нажал ViewController2, а затем ViewController3 в ответ на события нажатия кнопки.

Если я затем нажму кнопку «Назад» в представлении 3, я вернусь в представление 2, но в этом представлении нет кнопки «Назад». Интересно также, что, установив заголовки для каждого из этих видов («Вид 1», «Вид 2» и «Вид 3» соответственно), если я перейду от вида 3 назад к виду 2 с помощью кнопки «Назад», заголовок изменится на « Вид 1 ', т.е. заголовок для начального вида (вид 1), а не заголовок для вида 2.

Если кто-то имеет представление о том, что здесь может происходить, ваши предложения очень ценятся.

Большое спасибо заранее!

Редактировать: я использую следующий код для инициализации UINavigationController в делегате приложения:

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds]];
self.viewController1 = [[ViewController1 alloc] init];
self.viewController2 = [[ViewController2 alloc] init];
self.viewController3 = [[ViewController3 alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController1];
self.window.rootViewController = self.navigationController;

Позже я помещаю контроллеры представления в UINavigationController при нажатии кнопки следующим образом:

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
[self.navigationController pushViewController:appDelegate.viewController2 animated:YES];

1 Ответ

1 голос
/ 06 марта 2012

Я нашел решение - в viewController2 и viewController3 у меня был следующий код, чтобы скрыть панель навигации (я хотел, чтобы панель навигации была скрыта в view1, а затем видна в представлениях 2 и 3).

- (void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillAppear:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillDisappear:animated];
}

Я понял, что имеет гораздо больше смысла сделать обратное в viewController1, то есть

- (void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];
}

, а затем удалить предыдущий код из контроллеров представления 2 и 3. Это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...