Je crée un UITableViewCell
personnalisé pour inclure un UIImageView
et du texte associé. Je reçois les images de l'Internet et pendant que les images se chargent, j'affiche un UIImage
temporaire. J'utilise un fil séparé pour obtenir le UIImage
. Une fois qu'un UIImage
est téléchargé, je tirais une méthode sur le thread principal pour définir l'image dans le UIImageView
(obtenir l'instance de UIImageView
balises à l'aide)UIImageView à l'intérieur de UITableViewCell ne se met pas à jour
Mais quoi que je fasse, les images ne sont pas modifiées. Les cellules affichent toujours des images plus anciennes (correspondant à des lignes différentes - en raison de la réutilisation des cellules) et les nouvelles images ne sont pas reflétées. Les instructions de journal montrent que la méthode pour définir l'image est appelée. J'ai même essayé de changer l'image en une image statique en willDisplayCell:forRowAtIndexPath:
mais même alors, l'image ne change pas.
Modifier
J'ai essayé d'appeler reloadData
sur le UITableView
après avoir changé le UIImage
, mais le UIImage
ne change toujours pas.
est ici la pièce pertinente du Code
de cellForRowAtIndexPath
image = [imagesArray valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]];
if(image == nil){
//display temporary images. When scrolling stops, detach new thread to get images for rows visible
NSString *pth = [[NSBundle mainBundle] pathForResource:@"folder" ofType:@"png"];
image = [UIImage imageWithContentsOfFile:pth];
[imgView setImage:image];
}
else{
[imgView setImage:image];
}
Méthode qui est appelée sur le thread principal après une image est téléchargée
-(void)setImageInArray:(NSIndexPath *)indPath{
[filesTable reloadData];
}
Dans le fil, J'ajoute l'objet UIImage
à imagesArray
. Donc, lorsque la prochaine fois la méthode cellForRowAtIndex
est appelée reloadData
, le nouveau UIImage
doit être affiché.