我正在构建一个iOS应用程序,它将XML项目添加到TableView(当然还有其他东西)。如果文章的缩略图字段为空,我想在TableView单元格或默认占位符中显示文章的缩略图。从远程URL添加图像后,TableView滚动口吃
下面的代码添加了文章中的缩略图,但之后导致滚动的结果相当多。如果我只为每个单元格使用占位符图像,一切都很好。我猜测我可能没有使用最理想的方法来添加缩略图,不知道是否会导致问题。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"idCellNewsTitle"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"idCellNewsTitle"];
}
NSDictionary *dict = [self.arrNewsData objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"holder-small.jpg"];
cell.textLabel.text = [dict objectForKey:@"title"];
cell.detailTextLabel.text = [dict objectForKey:@"pubDate"];
if ([dict objectForKey:@"thumbnail"] != nil) {
NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString: [dict objectForKey:@"thumbnail"]]];
if (imgData) {
UIImage *image = [UIImage imageWithData:imgData];
if (image) {
cell.imageView.image = image;
}
}
}
return cell;
}
编码在最新的XCode,测试在模拟器和一个新的iPod - 结果是既相同。在应用程序运行期间没有任何警告或错误,滚动时CPU的峰值为1%,内存保持在16 MB左右。
更新 - 视频 这里是一个视频展示了这个问题的任何未来的菜鸟与比较 - 第一个例子是一个占位符,第二个是没有。 Video on YouTube
撷取图片不这样做 “dataWithContentsOfURL” 在主线程上,使用一个后台线程完成这个任务 – Pawan
我刚学的iOS编程 - 你可以在此上阐述一下或者用一些示例代码发布答案?我真的很感激它。感谢您的反馈:) – NightMICU
您还应该缓存图像,以便在每次UITableViewCell变为可见时不会下载相同的图像。 – Jonathan