[ios] UIViewController viewDidLoad vs viewWillAppear: Quelle est la bonne division du travail?



1 Answers

Initialement utilisé seulement ViewDidLoad avec tableView. Lors d'un test avec perte de Wifi, en mettant l'appareil en mode avion, on s'est rendu compte que la table ne s'est pas rafraichie avec le retour du Wifi. En fait, il semble qu'il n'y ait aucun moyen de rafraîchir tableView sur l'appareil même en appuyant sur le bouton d'accueil avec le mode d'arrière-plan défini sur OUI dans -Info.plist.

Ma solution:

-(void) viewWillAppear: (BOOL) animated { [self.tableView reloadData];}
Question

J'ai toujours été un peu confus sur le type de tâches qui devraient être assignées à viewDidLoad vs viewWillAppear : dans une sous-classe UIViewController .

Par exemple, je suis en train de faire une application dans laquelle j'ai une sous-classe UIViewController frappe un serveur, qui UIViewController données, les UIViewController à une vue et affiche ensuite cette vue. Quels sont les avantages et les inconvénients de faire cela dans viewDidLoad vs viewWillAppear ?




Cela dépend, avez-vous besoin des données à charger chaque fois que vous ouvrez la vue? ou seulement une fois ?

  • Rouge: Ils ne nécessitent pas de changer à chaque fois. Une fois qu'ils sont chargés, ils restent comme ils étaient.
  • Violet: Ils doivent changer au fil du temps ou après chaque chargement. Vous ne voulez pas voir les mêmes 3 utilisateurs suggérés à suivre, il doit être rechargé chaque fois que vous revenez à l'écran. Leurs photos peuvent être mises à jour ... vous ne voulez pas voir une photo d'il y a 5 ans ...

viewDidLoad: Quel que soit le traitement que vous avez à faire une fois.
viewWilLAppear: Quel que soit le traitement à modifier chaque fois que la page est chargée.

Les étiquettes, les icônes, les titres de boutons ou la plupart des données de DataInByDeveloper ne changent généralement pas. Les noms, les photos, les liens, l'état des boutons, les listes (tableaux d'entrée pour votre tableViews ou collectionView) ou la plupart des dataInputedByUser changent généralement .




Related