我使用提供很好類asyncimageview:http://www.markj.net/iphone-asynchronous-table-image/的UITableView使用JSON文件,加載圖像到細胞消失
我從一個JSON文件中獲取圖像URL,且每個圖像加載到單元格。
問題:
當我向上滾動,然後滾動回落到相同的細胞中,圖像重新加載(消失,再次出現)。我無法弄清楚爲什麼圖像不斷重新加載?有沒有人有建議或解決方案,我可以如何讓它停止?提前致謝!
// Asks the data source to return a cell to insert in a particular table view location
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Gets the current news article
NewsArticle *theCurrentArticle = [self.listofNewsArticles objectAtIndex:[indexPath row]];
//Gets the title from the current article
NSString *theTitle = theCurrentArticle.title;
//Gets the image url
NSString *imageUrl = theCurrentArticle.imageURL;
//Gets the description of the current news article
NSString *theDescription = theCurrentArticle.description;
NewsCustomCell *cell = (NewsCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"NewsContent"];
__block NewsCustomCell *aCell;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if (cell == nil) {
aCell = (NewsCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"NewsContent"];
} else {
AsyncImageView* oldImage = (AsyncImageView*)
[cell.contentView viewWithTag:999];
[oldImage removeFromSuperview];
}
AsyncImageView *imageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(5, 5, 100, 100)];
imageView.tag = 999;
dispatch_async(dispatch_get_main_queue(), ^{
[imageView loadImageFromURL:[NSURL URLWithString:imageUrl]];
[cell.contentView addSubview:imageView];
cell.titleLabel.text = theTitle;
cell.descriptionLabel.text = theDescription;
cell.imageLabel.contentMode = UIViewContentModeScaleAspectFill;
});
});
return cell;
}
繼承人的當前應用程序的樣子:
解決方案:
與此類我終於發現只是工作。 https://github.com/rs/SDWebImage 這處理緩存,異步下載。希望我能更快找到它。
聽起來像所有的圖像都有標記999.如果您將該標記設置爲獨特的,該怎麼辦?就像每行索引路徑的序列化版本一樣? – abellina 2013-03-15 03:29:00
嗯,我需要在那裏標記,所以如果它檢測到已經在視圖中的圖像,它會從超級視圖中刪除它。這是因爲你沒有圖像相互重疊。 – Jomoka 2013-03-15 03:50:05