Перезапустите рисование и события в UIViewController (iOS) - PullRequest
0 голосов
/ 11 июня 2011

Упрощенный вопрос: есть ли способ перезапустить навигационный контроллер приложения?. Я пытаюсь заставить приложение получить его первоначальный вид.


Длинное объяснение

У меня есть любимый проект в 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, переход к первому виду виден. В других случаях вид рекламы все еще присутствует, поэтому он закрывается, а затем появляется заставка.

Было бы здорово, если есть какой-то способ перезагрузить этот первый контроллер (заставку), чтобы все переходы работали в первый раз. Я думал о том, чтобы вытолкнуть его из контроллера навигации и перезагрузить еще один, снова выделив, но это кажется немного сложным.

Есть ли простой способ добиться этого?

Важное редактирование: если пользователь несколько раз принудительно заставляет приложение работать в фоновом режиме, генерируются следующие исключения:

вложенная поп-анимация может привести к повреждению панели навигации Завершение перехода навигации в неожиданном состоянии. Дерево подпунктов панели навигации может быть повреждено.

1 Ответ

1 голос
/ 13 июня 2011

Самый простой способ, который я нашел, это добавить в файл plist новую строку с ключом «Приложение не запускается в фоновом режиме» и со значением YES.

Принудительно закрывает приложение ивыгружается из памяти, когда пользователь нажимает кнопку.

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