UICollectionCellView - 带来重复的图像
Posted
技术标签:
【中文标题】UICollectionCellView - 带来重复的图像【英文标题】:UICollectionCellView - Bringing repeated Images 【发布时间】:2014-05-20 11:56:36 【问题描述】:我正在将一些图像从 parse 下载到 UICollectionView
。问题是在下载图像之前单元格被重复使用。如何取消请求并避免在不同单元格上重复相同的图像?
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
WallImage *wallImageFromUser = [DataStore instance].wallImagesFromUser[indexPath.row];
static NSString *identifier = @"Cell";
UserPhotoCollectionViewCell *cell = (UserPhotoCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
if ([[DataStore instance].wallImagesFromUser count] > 0)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void)
UIImage *postedImage = [UIImage imageWithData:[wallImageFromUser.imageFile getData]];
dispatch_async(dispatch_get_main_queue(), ^(void)
[cell.userPhotoButton setImage:postedImage forState:UIControlStateNormal];
);
);
return cell;
我尝试使用[wallImagesFromUser.imageFile cancel]
,但没有成功。
有什么建议吗?
【问题讨论】:
【参考方案1】:根据我的说法,您应该将您的单元格标识符名称创建为您的自定义单元格名称。这是避免在您的应用程序中重复单元格的更好方法。并尝试这样做
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
static NSString *identifier = @"UserPhotoCollectionViewCell";
UserPhotoCollectionViewCell *cell = (UserPhotoCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void)
WallImage *wallImageFromUser = [DataStore instance].wallImagesFromUser[indexPath.row];
UIImage *postedImage = [UIImage imageWithData:[wallImageFromUser.imageFile getData]];
dispatch_async(dispatch_get_main_queue(), ^(void)
[cell.userPhotoButton setImage:postedImage forState:UIControlStateNormal];
);
);
return cell;
但我更喜欢 SDWebImage 下载 collectionview/tableview 单元格中的图像 您可以使用 SDWebImage 第三方在您的 collectionview 单元格的图像中下载图像。它下载一次图像并将图像设置到该特定单元格。它减少了collectionview单元格中重复图像的问题。它还可以提高您的应用程序性能。你可以在这里下载
https://github.com/rs/SDWebImage
【讨论】:
对不起,我认为你弄错了。您必须对单元格使用 dequeReusable 。我正在从 Parse Web 服务器下载图像。 你是对的。我忘记为单元格添加 dequeReusable。谢谢以上是关于UICollectionCellView - 带来重复的图像的主要内容,如果未能解决你的问题,请参考以下文章