使用Xcode 6 beta 6,我使用了标准的View Controller并将Collection视图放入其中。在此之后,我添加了一个原型单元格,CollectionViewController.m文件中的数组从该单元格提供图像。
当图像确实出现时,直到该单元格已从屏幕滚动然后重新打开后才会加载。这会在应用程序打开时停止加载任何图像,直到用户向下滚动。
图像存储在本地文件中,而不是数据库中。
尽管缺少图像,我已将单元格链接到另一个视图控制器,即使没有显示图像,segue仍然可以运行。
感谢您提前提供任何帮助。
答案 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];