Tout problème lié aux performances de défilement UITableView
peut être résolu à l'aide des techniques déjà décrites dans d'autres réponses. Cependant, une performance léthargique est parfois causée par quelque chose d'intrinsèquement erroné ou répétitif. Le fait que UITableView
réutilise les cellules, et le fait que chaque cellule puisse avoir besoin de sa propre image - ensemble rend le bit de la solution complexe. De la façon dont il est résolu de manière générale, ici je résume les choses qui devraient être prises en charge:
- Charger les données dans la source de données - à partir de REST/base de données. Cette étape doit être effectuée en arrière-plan, en utilisant éventuellement dispatch_async avec la file d'attente GCD.
- Créer et initialiser les objets du modèle de données pertinentes et de les mettre dans un tableau
[tableView reloaddata]
- intérieur
cellForRowAtIndexPath
, comprennent le code qui ensemble de données (texte) de l'objet de modèle de données correct du tableau.
- Maintenant, les images peuvent aussi prendre la forme d'une URL, donc cette étape peut être un peu bizarre à cause de la réutilisation de cellules effectuée par une vue de table. Le cœur du fait est de charger à nouveau l'image à partir du cache/URL de l'appareil à l'aide de la file d'attente asynchrone, puis de la définir pour corriger cell.image (quelle que soit la propriété de votre image de cellule).
Pour éviter les problèmes, reportez-vous à ce didacticiel à propos de lazy loading of images à l'intérieur de la vue de table.
Si vous avez besoin de mettre en cache les hauteurs de cellules (ce qui peut être coûteux à calculer et est également utilisé fréquemment), j'ai donné un exemple. Utilisez-le uniquement s'il convient à votre application. http://stackoverflow.com/questions/1371223/how-do-i-cache-something-for-a-tableview/10992748#10992748 –