Получать уведомление, когда контроллер iOS4 появится в диспетчере представлений
Этот вопрос задавали раньше, но ответы, которые я мог найти, были с 2009 года и не подходят моей проблеме. Позвольте мне повторить этот вопрос.
У меня есть UINavigationController
, который порождает и выталкивает много разных UIViewController
в свой стек. Одна из этих сделок связана с некоторыми операциями Core Data, которые необходимо сохранить, когда один конкретный VC выскочит из стека. Не сосредотачивайтесь на части основных данных, это о появлении.
Как я могу подключиться к моменту, когда UIViewController
выйдет из стека?
- Я надеялся на какой-то метод делегата, но не смог найти его. Протокол
UINavigationControllerDelegate
очень разрежен.
- Затем я начал думать о том, чтобы использовать
viewWillDisappear
, но этот вызов также вызывается, если другое представление помещается в на в стеке, поэтому оно не дает нужного момента.
- Этот ответ на вопрос, начиная с 2009 года, позволяет посмотреть на
viewWillAppear
контроллера представления, который мы "выскочим на", но поскольку этот вызов doesn У меня есть ссылка на VC, который должен выполнить проверку, это неудовлетворительно и приведет к тому, что уровень зависимости будет контрпродуктивным (VC используется несколькими NC).
- Другой ответ на вопрос, также с 2009 года, выбирает подкласс UINavigationController и переписывает метод popViewControllerAnimated:. Или, альтернативно, используйте деблокировку VC. Моя кишка говорит мне, что не может быть способ пойти.
- Наконец-то последний последний вопрос с марта 2011 года, но никто не хотел отвечать на него.
Это оставляет меня в моем нынешнем неудовлетворенном состоянии ума. Есть ли там кто-нибудь с лучшим решением, чтобы найти момент, когда ваш UIViewController выскочил из стека UINavigationController?
Cheers,
ЕР.
Ответы
Ответ 1
viewWillDisappear
является подходящим делегатом. Вам нужно будет добавить логику в этот метод, если вы хотите определить, будет ли текущее представление вытолкнуто или будет нажато новое представление. Здесь был дан ответ - viewWillDisappear: определить, будет ли отображаться контроллер просмотра или отображается контроллер подзадачи
Ответ 2
Я верю, что пошла бы на другое направление, и попытаюсь поймать опрос с отдельного viewControllers, а не на navigationController. Для отдельного viewController всплывающее окно выглядит так, как будто оно освобождается, и это вполне возможно.
Подкласс UIViewController, выполните ваше уведомление в -dealloc
. Обязательно вызовите [super dealloc]
.
Затем каждый вид, который вы вставляете в свой подкласс контроллера навигации, настраивает ваш новый пользовательский подкласс диспетчера. Они могут делать все, что они делают в своем собственном представленииDidUnload, а затем вызывать [super dealloc]
(в этом случае super
является вашим подклассом UIViewController) для запуска уведомления.