如果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
答案 0 :(得分:0)
我发现了问题。
早些时候,我是dequeuing
个单元并设置了它的新模型数据,但模型数据未正确反映在子类UICollectionViewCell
中。
我需要覆盖表示我的子类UICollectionViewCell
的模型数据的属性的setter方法。在那些重写方法中,我能够更新单元格的相应视图。