UINavigationController меняет представление - PullRequest
0 голосов
/ 04 апреля 2009

У меня проблема с изменением отображаемого вида.

Мое приложение содержит 2 вида контроллеров. Один аудиоплеер и 1 об. Контроллер Audio View никогда не освобождается, а второй выпускается, когда аудио viewController push.

Мое приложение также имеет объект AppDelegate, который используется всеми UIViewControllers. Класс AppDelegate содержит экземпляр UINavigationController, который отвечает за отображение правильный вид.

Таким образом, для нажатия на vire я использую этот код:

<code>
[appDelegate.navigationController pushViewController:initialLoadingViewController animated:NO];

Работает хорошо, за исключением второго раза, когда я получил сообщение о том, что тот же контроллер вида уже присутствует.

Я также попробовал popToViewController: отображается правильный вид, но все кнопки кажутся отключенными, а затем мое приложение вылетает.

Итак, мой вопрос: каков наилучший способ изменить текущий viewController?

Большое спасибо за вашу помощь.

Thierry

Ответы [ 2 ]

0 голосов
/ 04 апреля 2009

Навигационный контроллер поддерживает стек контроллеров представления. Я предполагаю, что аудио-просмотр должен быть первым, который будет замечен. Это корневой view-контроллер. Когда пользователь запрашивает его (или какое-либо другое событие), вы помещаете контроллер about в стек представлений контроллеров навигации (pushViewController:animated:).

Чтобы вернуться к аудио-просмотру, вы просто выталкиваете контроллер вида с popViewControllerAnimated:. После этого может быть выпущен контроллер about view. Вам нужно выделить его снова (то есть перезагрузить его из файла .nib), если вам понадобится снова.

Введение Apple в просмотр контроллеров

0 голосов
/ 04 апреля 2009

Трудно сказать, не видя больше кода, но звучит так, будто вы пытаетесь получить доступ к контроллеру представления, который вы выпустили. Когда вы помещаете другой контроллер представления в стек, ничего не выпускайте и смотрите, исправляет ли это сбой ....

Кстати, appDelegate.navigationController выглядит подозрительно - попробуйте использовать self.navigationController.

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