2010-12-09 61 views
0

Je cherche des suggestions sur la façon de créer un gestionnaire de vignettes efficace pour les listes de navigation sous forme de tableaux. Je peux démarrer un thread et télécharger et mettre en cache les vignettes, mais je ne sais pas comment mettre à jour une cellule de tableau avec l'image (une cellule visible ou en dehors de la vue).Chargement de vignettes pour l'imageview dans une cellule de tableau

Je pense que l'application Blocket fait ce que je suis après, si je me souviens bien.

Je voudrais définir une image d'espace réservé, et que les charges de fil chaque image, il met à jour les cellules. L'espace réservé peut être un indicateur d'activité animé (spinner), si possible.

Existe-t-il un exemple de code laconique là-bas, ou peut vous donner des suggestions sur la façon de communiquer la mise à jour à la cellule et la forcer à afficher l'image immédiatement?

Répondre

0

Fait le chargement des vignettes taraudé plus belle que je l'ai vu encore sur iPhone: D Le plus dur annulait un fil lors de la navigation loin de sa table. Un chargement d'images NSThread et performSelectorOnMainThread waitUntilDone: YES lors de la mise à jour de cell.imageView, en passant des objets (cell, tableView, indexPath etc) dans un tableau pour contourner la limitation de passage d'un seul objet dans withObject. Regarde royale avec un fade-in rapide de chaque image comme ils chargent :)

+0

Cheesy mark-your-own-réponse puisque je devais fondamentalement résoudre comment le faire moi-même et cette réponse a quelques spécificités qui peuvent aider les autres. –

0

Problème intéressant.

je suppose à un certain niveau, vous aurez besoin de remplacer les cellules existantes dans la vue de table via la méthode reloadRowsAtIndexPaths:withRowAnimation:UITableView, donc je pense que vous aurez besoin de garder une recherche du contenu des cellules -> indexPaths de sorte que vous savez qui cellules mettre à jour lorsque l'actif concerné devient disponible. Cependant, vous devrez éviter de casser le système de réutilisation de cellules existant. (Ex: il n'y a pas de valeur avant la création de toutes les cellules à l'avance.) En tant que tel, une grande partie de ce travail devrait se faire dans le - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath UITableViewDelegate méthode, je soupçonne.

Cela dit, nous espérons que vous aurez une meilleure réponse que ces divagations assez vagues. :-)

+0

Fait me penser à quelque chose. Peut-être qu'il pourrait suffire d'un [mytable reloadData] quand le chargement-thread est fait. Cela ne fera que rafraîchir les cellules visibles, mais lorsque la vue défilera, cellForRow ... sera appelée et les images remplacées seront utilisées dans l'imageview de la cellule. –