我有代码:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 30;
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:REUSE_IDENTIFIER forIndexPath:indexPath];
[[cell subviews]
makeObjectsPerformSelector:@selector(removeFromSuperview)];
[cell addSubview:someView];
return cell;
}
viewWillAppear
如果我执行上述代码30次,则视图外观非常慢。
由于单元格重用,我需要调用removeFromSuperView。否则,单元格上会显示过时的错误数据。
我无法弄清楚可能导致缓慢的原因??
你能提供提示吗?
答案 0 :(得分:1)
您的外观很慢,因为您正在遍历单元格中的所有子视图并从superview中删除。这是一个非常昂贵的过程,不应该在collectionView数据源的cellForItemAtIndexPath方法中完成/事实上,永远不应该这样做。如果需要显示相关内容,则需要访问单元格实例并更新单元格中UI元素的属性。