Увольнение нескольких модальных контроллеров - PullRequest
2 голосов
/ 08 февраля 2010

В моем приложении для iPhone у меня есть два контроллера представления, которые я хочу представить модально. Существует корневой контроллер, который представляет первый (скажем, A), а затем A представляет второй (скажем, B). Затем я хочу одновременно закрыть и A, и B, вызвав метод dismiss… из корневого контроллера. В документации говорится, что в этом случае весь стек контроллеров удаляется, и A, и B. Оба контроллера действительно исчезают с экрана, но когда я проверяю A, его свойство modalViewController все еще устанавливается, и когда я позже пытаюсь снова присутствует B от A, ничего не происходит. Я решил эту ситуацию, позвонив dismissModalViewControllerAnimated:NO на А, прежде чем представить А на экране, но это взлом, а не реальное решение. Что происходит, что я делаю не так?

1 Ответ

1 голос
/ 22 февраля 2010

Хм. У меня не было проблем в этой ситуации.

Я реализовал это с помощью делегата и протокола, просто методом dismissMe: в родительском объекте, который обрабатывал увольнение, и переменной в дочернем элементе, указывающей на родительский элемент. Когда root установил A, он сказал A, что root был его делегатом; То же самое, когда А настроил Б.

Когда B был готов, он отправил [делегат dismissMe: self]. A dismissMe: отклонил B без анимации, затем отправил [делегат dismissMe: self]. Rom's dismissMe: затем распустил A unanimated. Видимым эффектом было то, что B уступил место корню.

Я могу найти источник из моего репозитория git, если потребуется. Я перешел на другую схему, когда рабочий процесс этого приложения стал более сложным.

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