ios – UICollectionView reloadData ghost单元格

我来到这里是因为我的UICollectionView有一个非常奇怪的问题.

Imgur相册与我想分享的所有屏幕:http://imgur.com/a/v3sox

首先,这是我的应用程序看起来没有问题:专辑的图像2.

注意右上角的刷新按钮,这是给我带来问题的按钮.

当我非常快速地向下滚动UICollectionView,并在收集视图仍然滚动时按“刷新”,我有“细胞剩余”,它不属于任何人,只是停留在屏幕上.
(例如:专辑的图像1)

我不明白发生了什么,因为在我的刷新方法中我有:

- (void)refreshData
{
  //A bunch of code before I reset the data
  dispatch_async(dispatch_get_main_queue(), ^{
        //Reset data
        currentProjects = nil;
        [self.projectsCollectionView reloadData];

        //Some other stuff concerning the little "Chargement..." view
  };
}

然后单元格继续在我的屏幕上保留在每个文件夹上,所以如果我选择另一个文件夹,我将获得相册的图像3(注意最后4个单元格的标签,它们是混合的,因为之前的单元格仍然是在他们不应该在屏幕上.)

有没有人知道可能导致这种情况的原因?非常感谢你的时间

P.S:对不起,我把所有的屏幕放在一张专辑中,不能发布超过2个链接,所以我不得不即兴发挥

最佳答案 也遇到了同样的问题.我通过修改UICollectionViewCell来解决它.

(注意:我的代码是使用MonoTouch的c#).

在单元格每次创建对象之前.即.

textView = new UITextField()
{
    BackgroundColor = UIColor.Clear,
    TextColor = UIColor.LightGray,
    Text = Title
};

修复它,检查对象,并相应地更新它.

if (textView == null)
{
    textView = new UITextField()
    {
        BackgroundColor = UIColor.Clear,
        TextColor = UIColor.LightGray,
        Text = Title
    };
}
else
    textView.Text = Title;

现在,当在CollectionView上调用重载数据时,它会正确重新加载.

点赞