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