J'ai un grand ensemble de données (environ 3500 objets) qui retourne d'un serveur distant via HTTP. Actuellement, les données sont présentées dans un NSCollectionView. Un aspect des données est un chemin d'accès au serveur pour une petite image qui représente les données (pensez à la vignette pour plus de simplicité).La liaison Valueurl sur les grands tableaux provoque une interface utilisateur léthargique
Les liaisons fonctionnent de manière fantastique pour les données déjà renvoyées, et la liaison de l'image via une liaison valueurl est facile à faire. Cependant, l'interface utilisateur est très lente lors du défilement de l'ensemble de données - ce qui me fait penser que le NSCollectionView
récupère toutes les données d'image au lieu de seulement les données d'image utilisées pour afficher les images actuellement visibles. J'ai eu l'impression que les contrôles Cocoa étaient assez intelligents pour récupérer uniquement les données pour les informations qui sont en cours de sortie vers l'interface utilisateur par chargement paresseux. Cela semble certainement être le cas avec NSTableView
- mais je pourrais être égaré sur cette pensée.
La liaison valueurl doit-elle agir paresseusement et, de plus, doit-elle agir paresseusement dans un NSCollectionView
?
Je pourrais créer un mécanisme de mise en cache (en fait je l'ai déjà mis en place pour une autre application - voir mon article ici si vous êtes intéressé Populating NSImage with data from an asynchronous NSURLConnection) mais je ne veux vraiment pas suivre cette voie Je dois le faire pour cette implémentation spécifique, car l'utilisateur pourrait potentiellement modifier des ensembles de données souvent et ne souhaiterait que de petits sous-ensembles de données.
Des approches suggérées?
Merci!
Mise à jour
Après un peu plus de tester, il semble que le problème se pose parce qu'une action de défilement à travers l'ensemble de données provoque chaque image à demander à partir du serveur. Une fois que toutes les images ont été passées dans l'ensemble de données, la réponse est très rapide.
Alors, question ... est-il possible de désactiver la récupération valueur lors du défilement et de la réactiver lorsque le défilement est terminé?