iOS UICollectionView reloadData将模型映射到ViewCell不正确

时间:2013-01-04 03:43:51

标签: iphone ios uicollectionview reloaddata uicollectionviewcell

如果NSArray中的模型数据没有变化,并且您在reloadData上调用了UICollectionView,那么这些单元格会出现在不同的位置吗?

我发现如果我的NSArray持有Obj1,Obj2,Obj3,那么首先,UICollectionView正确地将Obj1映射到第一个collectionViewCell,将Obj2映射到第二个,等等这是它在cellForRowAtIndexPath中设置的方式,因为它使用indexPath.row从数组中获取正确的Obj。

然而,当我调用reloadData时,所有对象都映射到错误的UICollectionViewCell(Obj1最终到达其他地方,例如第二个{​​{1}},而Obj2最终成为第三个collectionViewCell等等。)

为什么会这样?我没有在文档中找到原因。


FURTHERMORE,当我的模型阵列发生变化时,我遇到了同样的问题。例如,如果我的collectionViewCell是Obj1,Obj2,Obj3,然后创建了Objs的新实例,现在它们的顺序不同,那么NSArray是Obj2,Obj3,Obj1 ..然后我打电话给NSArray,我面临同样的问题。

Obj2没有映射到第一个reloadData,而是映射到不同的UICollectionViewCell

任何人都知道UICollectionViewCell会发生这种情况的原因吗?

谢谢!

编辑:UICollectionViews的代码

cellForRowAtIndexPath

1 个答案:

答案 0 :(得分:0)

我发现了问题。

早些时候,我是dequeuing个单元并设置了它的新模型数据,但模型数据未正确反映在子类UICollectionViewCell中。

我需要覆盖表示我的子类UICollectionViewCell的模型数据的属性的setter方法。在那些重写方法中,我能够更新单元格的相应视图。