[英]UICollectionView Not Loading Cells
这是我拥有的cellForItemAtIndexPath
代码:
static NSString *cellIdentifier = @"Cell";
MyCustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
//do stuff, set label text
if (indexPath.section == 0) cell.label.text = [words1 objectAtIndex:indexPath.row];
else if (indexPath.section == 1) cell.label.text = [words2 objectAtIndex:indexPath.row];
else if (indexPath.section == 2) cell.label.text = [words3 objectAtIndex:indexPath.row];
return cell;
我在viewDidLoad
注册单元格类型:
[_collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier:@"Cell"];
我在情节提要中设置了收藏夹视图,并正常连接了代表和数据源。
现在我的问题...我有两种方法,都遇到问题。 我有3个部分,每个部分都来自唯一的数据数组。
提取所需的数据后,使用[_collectionView reloadData]
。 根据数组计数,这将加载正确数量的单元格,但不会填充屏幕外的单元格。 因此,当我在屏幕上滚动它们时,它们尚未设置标签。
代替上面的方法,我尝试使用以下代码(每节一次)在读取数据(首选路由)时重新加载每个节:
[self.collectionView performBatchUpdates:^{ [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]]; } completion:nil];
但是,使用此方法的问题在于,重新加载后,它会用正确数量的单元格填充我的收藏视图,但是单元格本身是空白的,标签上没有文本。
在这两种情况下,如果我在屏幕上,屏幕外滚动并重新打开非加载单元,它们将加载。 但是,当您第一次看到它们时,它们却没有。
解决。 放置UI代码(例如在layoutSubviews
方法内创建UILabel
(不是nil))是不好的。
将此代码移到我的自定义UICollectionViewCell
子类上的init
方法中,解决了如果单元UI不一致的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.