Как я могу настроить контроллер представления для обновления полей в представлении, только если он нажимается на контроллер навигации и освобождает объекты, когда он выталкивается из представлений контроллера навигации.
Моя цель заключается в том, что для контроллера представления:
- Обновлять отображение только тогда, когда оно помещается в стек навигационного контроллера.
- выпускает данные, когда они извлекаются из стека навигационного контроллера
- повторно использовать контроллер как можно больше (чтобы исключить накладные расходы на загрузку/выгрузку файлов xib)
Существуют ли какие-либо методы делегирования для viewWillBePushed: и viewWillBePopped:?
Пример
Скажем, у меня есть три слоя представлений:
Movies (MovieListController)
--> Movie Basic Info (MovieInfoController)
--> Movie Credits (MovieCreditsController)
Предположим, у нас есть класс Movie для представления каждого фильма.
Здесь я хочу иметь только три UIViewController, по одному экземпляру каждого во время выполнения программы. Так что я могу повторно использовать один и тот же MovieInfoController для разных фильмов и аналогично MovieCreditsController.
Однако я также хотел бы, чтобы MovieInfoController обновлял свои поля просмотра (например, название, дату выпуска и т. д.) только тогда, когда он помещается в стек. Реализация отображения в viewWillAppear заставит его обновлять поля, даже когда MovieCreditsController выталкивается.
Кроме того, я хочу, чтобы MovieInfoController освобождал свою ссылку на Movie при его извлечении и любой потенциально большой объект (например, изображение обложки). Реализация этой логики в viewWillDisappear приведет к освобождению данных при помещении MovieCreditsController в стек.
Есть ли разумный? Я иду об этом неправильно?