UICollectionView,单元格内的图像不会加载,直到单元格从屏幕滚动

时间:2014-08-26 14:24:36

标签: objective-c xcode uiimageview uicollectionview uicollectionviewcell

使用Xcode 6 beta 6,我使用了标准的View Controller并将Collection视图放入其中。在此之后,我添加了一个原型单元格,CollectionViewController.m文件中的数组从该单元格提供图像。

当图像确实出现时,直到该单元格已从屏幕滚动然后重新打开后才会加载。这会在应用程序打开时停止加载任何图像,直到用户向下滚动。

图像存储在本地文件中,而不是数据库中。

尽管缺少图像,我已将单元格链接到另一个视图控制器,即使没有显示图像,segue仍然可以运行。

感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:2)

我猜你是在主线程的单元格图像视图上设置UIImage。将setter代码包装到以下代码段中:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

    cell.imageView.image = {UIImage object you've got};

}];

如果可能,您还可以选择尝试不同的单行替换方法:

[cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:{UIImage object} waitUntilDone:NO];

我无法找到你的意思是什么样的细胞;在每种情况下,将它应用于特定的目标图像视图,无论它是否属于您的单元格的一部分属性。

答案 1 :(得分:1)

你应该使用willDisplayCell方法来分配图像。 第一个初始图像然后创建单元格。

这是代码:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
return cell;}



-(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{

UIImageView *imageView = (UIImageView *)[cell viewWithTag:100];
imageView.image = images[indexPath.row];}

在数据准备好加载后,不要忘记重新加载集合视图:

[_myCollection reloadData];