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