UICollectionViewCell dequeueReusableCellWithReuseIdentifier给出一个隐藏的单元格

时间:2016-01-07 23:39:28

标签: ios uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个UICollectionView,我使用dequeueReusableCellWithReuseIdentifier来重用单元格。第二次调用cellForItemAtIndexPath时,会返回一个隐藏的单元格 - 因此单元格不会显示在我的UICollectionView中。我尝试将单元格硬编码为不隐藏 - 但这不起作用,隐藏的属性保持在"是"甚至在设置为" NO"之后。是什么导致细胞被隐藏 - 这怎么能被否定?

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    SFReceiptCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    [cell setHidden:NO];

    NSLog(@"cell.hidden = %d", cell.hidden);
    ...

这显示在日志中:

  

cell.hidden = 1

没有代码在哪里被隐藏的单元格 - 所以我不知道可能导致这种情况发生的原因。

1 个答案:

答案 0 :(得分:1)

刚刚遇到同样的问题。我花了3个小时进行调试并尝试设置.hidden = false但没有成功。 结果是添加:

override func applyLayoutAttributes(layoutAttributes:UICollectionViewLayoutAttributes)
{
    super.applyLayoutAttributes(layoutAttributes)
    self.updateSubviews()
}

我在项目中使用的UICollectionViewCell子类解决了这个问题。 我正在使用updateSubviews()来更新帧,因为我不想在单元格中使用自动布局。