W systemie iOS, jak zrobić cell.imageView odświeżyć jego zawartość?

Eksperymentuję wtableView:cellForRowAtIndexPath ustawić obraz, dzwoniąc

[self downloadImage:urlString andSetIntoCellImageView:cell]

i wdownloadImage, zadzwoniNSURLConnection:sendAsynchronousRequest (tylko iOS 5 i nowsze) iw bloku zakończenia ustaw obraz za pomocą

cell.imageView.image = [UIImage imageWithData:data];   // data is downloaded data

i działa, jeśli jesttableView:cellForRowAtIndexPath, theimageView jest wypełniony obojętnym obrazem zastępczym - i zastanawiam się, jak odświeżony jest nowy obrazsetNeedsDisplay zrobić odmalowanie? Ale jeśli nie ustawię obrazu zastępczego, nowy obraz w ogóle się nie pokaże. Zastanawiam się, jaki mechanizm można wykorzystać do pokazania obrazu?

Jeśli używam

[cell.imageView setNeedsDisplay]

lub

[cell setNeedsDisplay];

w bloku ukończenia nie będzie działać i jeśli użyję

[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                            withRowAnimation:UITableViewRowAnimationAutomatic];

w bloku ukończenia, wykonującdownloadImage ZaakceptujindexPath, zadzwonitableView:cellForRowAtIndexPath ponownie i spowodować nieskończoną pętlę. Wydaje się więc, że muszę użyć pewnej tablicy mieszania, aby zapamiętać, czy obraz jest już w tablicy mieszania: jeśli nie, wywołajdownloadImage, a jeśli w tablicy mieszającej, po prostu użyj go, więc nie będzie nieskończonej pętli.

Ale czy istnieje łatwy sposób na wyświetlenie obrazu? Ustawienie obrazu zastępczego działa, ale jeśli tego nie zrobimy - jakim mechanizmem zastępczym powoduje odświeżenie obrazu?

questionAnswers(2)

yourAnswerToTheQuestion