2013-07-03 131 views
4

我来到这里是因为我的UICollectionView有一个很奇怪的问题。UICollectionView reloadData鬼细胞

所有屏幕 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个链接,所以我只好即兴

+0

如果您已解决了自己的问题,请将其作为下面的答案发布,并将其标记为已接受,而不是。 –

回答

0

我也曾经有过这种类似的问题。问题是我的自定义单元格一次又一次地创建子视图。

从我的猜测,你应该改变标签的值,而不是在出列后重新创建它。

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上调用重载数据时,它会正确地重新加载。