Получать уведомление, когда контроллер 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) для запуска уведомления.