一段时间后UICollectionView不渲染单元格(一段时间后没有调用cellForItemAtIndexPath)

时间:2013-07-29 14:15:14

标签: ios uicollectionview

我对UICollectionView有疑问。问题是,在我的单元格高度动态后(静态高度没有出现问题),经过一段时间后,当数据发生变化时(我正在添加或替换单元格并调用[self.collectionView reloadData];),以及细胞只是停止显示/消失(开始时细胞总是正确显示)。对于相同的内容,这种情况随机发生,有时更早,有时甚至更晚。滚动存在,整个事物的高度似乎反映了单元格的高度,也调用sizeForItemAtIndexPath,并返回正确的值(numberOfItemsInSectionnumberOfSectionsInCollectionView)也是如此,但cellForItemAtIndexPath停止被召唤。内容消失后 - 无论我尝试显示什么数据(即使显示没有问题的初始数据),UICollectionView也不会显示任何单元格。值得一提的是,我正在调用[self.collectionView reloadData];非常多,因为我懒得加载图像,并在每个图像加载后刷新集合视图。

在我的UICollectionViewController中我有:

        - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    float height = 0.0f;
    CGSize retval;
    ...
                height = [T20UploadMessageCell getImageHeight:m.upload];
                retval = CGSizeMake(self.view.frame.size.width, height);

    ...
            return retval;
        }

在T20UploadMessageCell.m

+(float)getImageWidth:(Upload*)upload{
    return 98.0f;
}

+(float)getImageHeight:(Upload*)upload{
    if (upload.isLoaded)
        return 42.0f + upload.height * ([T20UploadMessageCell getImageWidth:upload]/upload.width);
    else return 140.0f;
}

我尝试过添加

-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    return YES;
}

在我的布局中,但没有帮助 我知道这种情况可能发生在身高较高的细胞上,但我不认为这是这种情况,因为最大高度是385,也试过限制它,而且正如我之前提到的 - 对于相同的细胞,这可能发生或不 - 它只是随机的。将会感谢你的帮助。感谢

0 个答案:

没有答案