J'ai une application avec une barre d'onglets qui contient quelques onglets avec du contenu généré par l'utilisateur. Lorsque chaque contrôleur de vue est chargé, la méthode viewDidLoad envoie des requêtes HTTP à un serveur pour récupérer des données, puis remplit sa vue en conséquence. Une fois toutes les données chargées, la vue reste la même (à moins que le contrôleur de vue ne soit déchargé et rechargé).Actualiser le contenu du contrôleur de vue sur l'application entrant au premier plan
Un grand nombre d'autres applications avec un contenu généré par l'utilisateur a un comportement similaire, sauf que chaque vue sera rechargée si l'application passe en arrière-plan et revient au premier plan à nouveau. En effet, lorsque l'utilisateur bascule entre les différents onglets pendant que l'application est active, le contenu ne sera pas automatiquement actualisé. Si l'utilisateur "quitte" l'application puis y revient plus tard, les vues seront rechargées.
Existe-t-il des pratiques standard pour concevoir une application de telle sorte? Plus précisément, je me demande s'il y a des subtilités UIKit dont je peux profiter pour rafraîchir mon point de vue sur les "redémarrages" de l'application. Sinon, je suppose qu'une approche simple consiste à demander à chaque contrôleur de vue de s'enregistrer pour les notifications dans viewDidLoad et d'écouter l'application entrer dans le premier plan. Le contrôleur peut alors répondre à chaque notification en rechargeant ses données.
Une optimisation consiste à déterminer si vous êtes le circuit virtuel visible. Si vous n'êtes pas visible, réglez simplement un drapeau sale et actualisez-le quand et si vous devenez visible. viewDidAppear: (BOOL) animé vous aidera avec votre mise en œuvre de drapeau sale. – logancautrell
Comment déterminez-vous si une vue est visible? Je pense que c'est vraiment nécessaire, car répondre toujours à UIApplicationDidBecomeActiveNotification entraînera des coûts inutiles pour recharger des données pour des vues qui pourraient ne pas être affichées. Toutefois, viewDidAppear: n'atteint pas vraiment ce dont nous avons besoin ici, car il ne semble pas se déclencher lorsque l'application devient active. Il ne semble que se déclencher si la vue apparaît alors que l'application est déjà active_, mais pas si la vue est déjà visible lorsque l'application passe de inactive à active. – pmc255