Question

Je développe une application iOS et ai des problèmes de décider comment aborder un problème.

J'utilise deux UITableViewControllers pour afficher différentes vues des mêmes données. La première est une liste principale, et l'autre ne contient que les éléments qui sont marqués comme « favori ». De plus, les articles sont à hauteur variable, donc je suis en utilisant « heightForRowAtIndexPath » pour indiquer la hauteur pour chaque élément. Le problème est la vitesse, quand je passe d'une vue à l'autre, il doit être mis à jour pour afficher les modifications apportées dans l'autre (favori / unfavourite marqué).

  

Solution # 1 :

     

Recharger les données à chaque fois une vue de la table devient visible. Cela ne fonctionne pas bien parce que même si les données d'affichage en utilisant le chargement paresseux, le « heightForRowAtIndexPath » est appelé pour chaque élément avant que les données sont chargées, et son lent. sur mon iPhone 4 une liste d'environ 300 articles prend environ quatre secondes à charge, même si les valeurs de hauteur sont mises en cache (le goulot d'étranglement applique la hauteur, ne pas le récupérer).

  

Solution # 2 :

     

manuellement manipuler les tables lorsque des modifications sont apportées. Je ne l'ai pas essayé, mais il serait probablement buggy. Vos pensées?

  

Solution # 3 :

     

L'utilisation d'un système de type de notification pour notifier à l'autre tableau des mises à jour des éléments qui pourraient actuellement être chargés. Je ne l'ai pas essayé, car il semble sur le dessus et ne fonctionne pas du tout.

Quelqu'un sait-il d'un moyen facile de montrer deux points de vue des mêmes données?

Pas de solution correcte

Autres conseils

Vous pouvez recharger n lignes avec reloadRowsAtIndexPaths: withRowAnimation. Je ne l'ai fait, mais je pense qu'il est là parce qu'il est plus rapide, donc vous pouvez l'essayer.

Sur la heightForRow: thingy, je peux me souviens avoir lu dans la documentation d'Apple qui cette fonction est en effet un tueur pour la performance. Peut-être que vous pourriez prendre la hauteur maximale des lignes, et que dans le jeu UITableView.rowHeight?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top