J'ai dessiné des cellules de tableau personnalisées (en utilisant les échantillons d'Apple comme base) et je dois maintenant faire une cellule qui affiche une image à partir d'une URL - chaque cellule aurait une image différente (basée sur certaines données il a) mais toutes les cellules sont les mêmes et donc le même id de réutilisation.iPhone personnalisé dessiné UITableViewCell, comment charger + insérer des images du Web dans un fil?
Quelle est la structure correcte pour cela? Évidemment j'ai besoin de charger l'image dans un nouveau fil. J'ai la fonction suivante si bien assis dans les cellules classe voir qui est exécutée dans son propre thread:
- (void)loadImage
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
self.img = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: [myProduct objectForKey:@"ImagePath"]]]];
[self setNeedsDisplay];
[pool release];
}
Quand j'appelle cela de la fonction drawRect lui-même (ce qui est mauvais) puis elle « fonctionne », mais cela est évidemment appelé chaque fois que quelque chose se passe (sélection, etc.). Si je le mets dans la fonction init des cellules uiview, alors il n'est appelé que pour les 8 premières cellules et ensuite elles sont réutilisées. D'autres variations ont fini par faire que l'image ne soit pas 'réinitialisée' quand la cellule est réutilisée et donc les mêmes 8 images se répètent dans la table (bien que l'autre texte soit mis à jour).
Je ne m'inquiète pas de la mise en cache pour l'instant, mais y a-t-il des exemples de comment faire cela, ou est-ce que quelqu'un peut me pointer dans la bonne direction? Merci.
Comment est-ce que je manipulerais les bits de fil à ceci? Je peux appeler le thread dans cellforrowatindexpath qui va et récupère l'image, mais à ce moment-là la cellule aura déjà dessiné (moins l'image), puis j'aurais besoin d'appeler setNeedsDisplay sur la vue des cellules à nouveau? – Tom