繁体   English   中英

UICollectionView不加载单元格

[英]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个部分,每个部分都来自唯一的数据数组。

  1. 提取所需的数据后,使用[_collectionView reloadData] 根据数组计数,这将加载正确数量的单元格,但不会填充屏幕外的单元格。 因此,当我在屏幕上滚动它们时,它们尚未设置标签。

  2. 代替上面的方法,我尝试使用以下代码(每节一次)在读取数据(首选路由)时重新加载每个节:

    [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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM