有很多答案可以将图像加载到UITableViews或UICollectionViews中。但是,如果我的UICollectionView正在显示来自其他视图控制器的视图呢?
在我的UICollectionViewCell子类中说我有这个:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.catViewController = [[CatViewController alloc] initWithNibName:nil bundle:nil];
self.catViewController.view.frame = self.bounds;
[self addSubview:self.catViewController.view];
}
return self;
}
在我的馆藏视图中,数据源:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:kSomeId forIndexPath:indexPath];
cell.catViewController.data = self.data[indexPath.row]; //see below
return cell;
}
catViewController有一个data属性的setter。设置此属性后,cat会加载它的图像,以及该视图的其他一些相关图像。那么如何正确地重用MyCell单元格,以便集合视图在每次创建(或重用)单元格时都不会断断续续?每个MyCell占据集合视图的整个宽度,该视图水平滚动,因此每当新单元格滚动到视图中时,集合视图会停顿片刻。
答案 0 :(得分:0)
对于高性能CollectionView单元格,请使用 iOS10 中的以下新内容使用xcode8
在ViewController中实现协议" UICollectionViewDataSourcePrefetching"
类ViewController:UIViewController,UICollectionViewDataSourcePrefetching {
将以下代理设置为storyboard中的集合视图(请参阅附图) 或以编程方式
在 ViewController viewDidLoad 方法
collectionView.delegate = self
collectionView.dataSource = self