138 votes

Quelle est la différence entre - viewWillAppear : et - viewDidAppear : ?

Quelle est la différence entre et ?

300voto

Chetan Bhalara Points 6936

En général, c'est ce que je fais:

1) ViewDidLoad - Chaque fois que je suis à ajouter des contrôles à un point de vue qui devrait apparaître avec la vue, tout de suite, je l'ai mis dans la méthode ViewDidLoad. Fondamentalement, cette méthode est appelée à chaque fois que le point de vue a été chargé en mémoire. Ainsi, par exemple, si mon point de vue est un formulaire avec 3 étiquettes, je voudrais ajouter les étiquettes ici, la vue n'existe pas sans les formes.

2) ViewWillAppear:- je utiliser ViewWillAppear habituellement juste pour mettre à jour les données sur le formulaire. Ainsi, pour l'exemple ci-dessus, je voudrais l'utiliser pour charger les données à partir de mon domaine dans le formulaire. Création de UIViews est assez cher, et il faut éviter autant que possible de faire ce que sur le ViewWillAppear méthode, parce que quand cela se appelle, cela signifie que l'iPhone est déjà prêt à montrer au UIView à l'utilisateur, et quelque chose de lourd à vous de le faire ici, aura un impact sur les performances dans un très visibles (comme les animations de retard, etc).

3) ViewDidAppear: Enfin, j'utilise le ViewDidAppear pour commencer de nouveaux threads pour les choses qui peut prendre beaucoup de temps à s'exécuter, comme par exemple faire un webservice appeler pour obtenir des données supplémentaires pour la forme ci-dessus.La bonne chose est que parce que la vue existe déjà et qui est affiché à l'utilisateur, vous pouvez afficher un joli message "Waiting" de l'utilisateur pendant que vous obtenir les données.

46voto

cocoanut Points 2396

viewDidLoad ===>>> Mettre votre code d'initialisation ici. Ne mettez pas de données dynamique qui peut évoluer au cours du cycle de vie vue. Donc, si vous êtes en tirant les données de base les données que vous ne voulez pas le faire ici si cela pourrait changer au cours de la vie de la vue. Par exemple: disons que vous avez un onglet contrôleur. Vous passez de à tab2 tab1 et changer quelque chose sur le modèle de tab2. Si vous revenez à tab1 et votre modèle de code a été fait dans le viewDidLoad ce ne serait pas mis à jour (en supposant que vous n'êtes pas à l'aide de KVO ou NSFetchedResultsController, etc.).

viewWillAppear ===>>> c'est Ce qui est appelée à chaque fois que la vue est sur le point d'apparaître, à savoir si ou non le point de vue est déjà en mémoire. Mettre votre code dynamique ici, tels que le modèle logique.

viewDidAppear ===>>> Mettre opérations coûteuses ici que vous ne voulez faire si vous êtes certain que le point de vue est à l'écran, tels que les appels réseau.

Avis: si votre application est backgrounded et revient au premier plan vous avez besoin pour gérer cette aide NSNotificationCenter. J'ai écrit le code pour que, dans les commentaires ci-dessous. Vous pourriez penser viewWillAppear/viewDidAppear le feu. Placez un point d'arrêt, il y et de le tester. Il n'a pas d'incendie. Donc, si quelque chose a changé pour votre application alors qu'il était à l'arrière, vous aurez besoin de mise à jour à l'aide de notifications.

12voto

puneet kathuria Points 320

La `` méthode est appelée avant le chargement de la vue réelle.

La `` méthode est appelée lorsque la vue est déjà chargée, et que vous voulez montrer quelque chose.

5voto

dks1725 Points 1173

viewWillAppear appellera avant de charger la vue afin que vous pouvez faire certaines tâches avant l’embarquement, qui découvre et viewdidappear appellera après le chargement de la vue pour le poste de tâches seront effectuée avec cette méthode

4voto

Mahesh Points 749

Différence entre « will » et « fait »... Comme son nom l’indique le viewWillAppear est appelée avant que la vue est sur le point d’apparaître et viewDidAppear est appelée lors de l’affichage apparaît.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X