ios - UICollectionView reloadData 幽灵细胞

标签 ios cells reloaddata collectionview

我来这里是因为我的 UICollectionView 有一个很奇怪的问题。

Imgur 专辑所有屏幕我想分享:http://imgur.com/a/v3sox

首先,这是我的应用毫无问题的样子:相册的图片 2。

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

当我快速向下滚动 UICollectionView 并在 Collection View 仍在滚动时按“刷新”时,我得到了不属于任何人的“剩余单元格”,只是留在屏幕上。 (例如:相册的图片 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 上调用重新加载数据时,它会正确重新加载。

关于ios - UICollectionView reloadData 幽灵细胞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444541/

相关文章:

swift - 最后一个 tableview 单元格在 View Controller 的底部被截断

iOS:tableView.reloadData() 在 swift3 中不起作用

ios - 重新加载数据后,我可以在 tableView 中保持相同的位置吗?

ios - 安装时出现错误消息 'ld: warning: directory not found for option',使用 CocoaPods 时出现错误消息 'library not found for -l'

ios - 如何在应用程序中使用钛的所有选项打开默认相机?

ios - xcodebuild 没有显示所有编译错误?

ios - Swift 在每个部分中选择一个单元格

ios - 使用 git 子模块/cocoapods

performance - 比较两个元胞数组的相同行 - MATLAB

iphone - 如何在实现 UITableViewDataSource 协议(protocol)的类中重新加载数据