Comment puis-je configurer un contrôleur de vue pour actualiser les champs dans la vue uniquement s'il est enfoncé sur un contrôleur de navigation et libère les objets lorsqu'il est retiré des vues du contrôleur de navigation.Forcer le chargement/déchargement d'une vue
Mon objectif est que pour un contrôleur de vue:
- affichage Actualiser seulement quand il est poussé sur la pile du contrôleur de navigation
- diffuse les données quand il est sauté de la pile du contrôleur de navigation
- réutiliser la contrôleur autant que possible (pour éliminer les fichiers xib chargement/déchargement overhead)
Y at-il des méthodes de délégué pour et viewWillBePopped:
?
Exemple
Disons que j'ai trois couches de vues:
Movies (MovieListController)
--> Movie Basic Info (MovieInfoController)
--> Movie Credits (MovieCreditsController)
Supposons que nous avons une classe Movie
pour représenter chaque film.
Ici, je veux seulement avoir trois UIViewController
s, une instance de chacun dans le temps d'exécution du programme. Donc, je peux réutiliser le même MovieInfoController
pour différents films et de même MovieCreditsController
.
Cependant, j'aimerais aussi que MovieInfoController
ne mette à jour ses champs de vue (par exemple titre, date de publication, etc.) que lorsqu'il est poussé sur la pile. L'implémentation de l'affichage dans viewWillAppear
le forcera à mettre à jour les champs même lorsque MovieCreditsController
est sauté.
En outre, je veux MovieInfoController
pour libérer sa référence à Movie
, quand il est sauté, et tout objet potentiellement volumineux (par exemple image de couverture). L'implémentation de cette logique dans viewWillDisappear
l'amènera à libérer les données lorsqu'il pousse MovieCreditsController
sur la pile.
Est-ce raisonnable? Est-ce que je vais dans le mauvais sens?
C'est en fait ce que je fais maintenant, sauf qu'il appelle 'drainFieldsInfo' au lieu de' setMovie: nil'. J'espérais quelque chose de mieux. Merci quand même! – notnoop