Упрощенный вопрос: есть ли способ перезапустить навигационный контроллер приложения?. Я пытаюсь заставить приложение получить его первоначальный вид.
Длинное объяснение
У меня есть любимый проект в iOS, и у меня странная проблема с интерфейсом, которую я хотел бы решить. Я хотел бы также понять механику этого поведения.
У меня есть простое приветствие, которое показывает заставку приложения. После этого поток переходит в состояние сна на 1,5 секунды.
[NSThread sleepForTimeInterval: 1.5];
Затем я показываю рекламный вид:
AdController *ad = [[AdController alloc] initWithNibName:nil bundle:nil];
[self.navigationController presentModalViewController: ad animated:YES];
[ad release];
И в этом вся логика. После этого другие контроллеры подталкиваются без инцидентов. Я хочу добиться этого, если в какой-то момент пользователь заставляет приложение перейти в фоновый режим (нажав кнопку iPhone / iPad), тогда все контроллеры должны исчезнуть из стека с помощью pop. Для этого я использую событие applicationDidBecomeActive от делегата. Код следующий:
[self.navigationController dismissModalViewControllerAnimated:NO];
[self.navigationController popToRootViewControllerAnimated:YES];
Это приводит к некоторым странным визуальным действиям. В зависимости от момента, когда пользователь нажал кнопку de, переход к первому виду виден. В других случаях вид рекламы все еще присутствует, поэтому он закрывается, а затем появляется заставка.
Было бы здорово, если есть какой-то способ перезагрузить этот первый контроллер (заставку), чтобы все переходы работали в первый раз. Я думал о том, чтобы вытолкнуть его из контроллера навигации и перезагрузить еще один, снова выделив, но это кажется немного сложным.
Есть ли простой способ добиться этого?
Важное редактирование: если пользователь несколько раз принудительно заставляет приложение работать в фоновом режиме, генерируются следующие исключения:
вложенная поп-анимация может привести к повреждению панели навигации
Завершение перехода навигации в неожиданном состоянии. Дерево подпунктов панели навигации может быть повреждено.