我有一个想要映射到UICollectionView的一维图像矢量(类似于3000)。我在实现委托方法cellForItemAtIndexPath时遇到了问题 - 即,我该如何处理NSIndex?我已经查看了网络上的所有文档和教程,并且每个人都对这个细节有所了解:我如何从这个异物NSIndex(我甚至不知道它来自何处)映射到一个整数我的数组的索引?
至于网格应该如何看,以下之一:
(A)预设数量为X行的图像,可以通过滑动水平滚动查看集合。订购应如此:
1 X+1 2X+1 ...scroll
2 X+2 3X+2 ...scroll
.
.
X X+X 2X+X ...scroll
(B)预设了Y列图像,可以通过滑动垂直滚动查看集合:
1 2 3 ... Y
Y+1 Y+2 Y+3 ... Y+Y
.
.
scroll up and down
.
.
我是否需要自定义类型的dequeueReusableCell?我自己的FlowLayout子类?我很困惑,因为这个NSIndex是如此令人费解。看起来它应该是一堆连接的整数,但我的数据源是一维数组,我不知道如何从NSIndex中提取索引,因为教程都使用了assetsArray或2D数组,以及NSIndex的文档只显示了一堆数组,而不是如何将它与单个数组一起使用。
谢谢!
答案 0 :(得分:1)
好的,来自UICollectionViewDatasouce协议的NSIndexPath只是一个Section和Row对,而不是一个网格。您是否实现了数据源方法 collection:numberOfItemsInSecion 和 numberOfSectionsInCollection 。你必须先做这些。处理 cellsForItemAtIndexPath 。
因此,例如在您的情况下,* numberOfItemsInCollection将返回1.这意味着只有1个数据部分。然后* collection:numberOfItemsInSection将返回你的1d数组的计数。 indexPath对象具有section和row属性。因此,如果您的 numberOfItemsInCollection 返回4(意味着有4个数据部分),那么集合:NumberOfItemsInSection 将至少被调用4次4次。每次,indexPath.section都会告诉你collectionView需要计算的数据部分。
在集合:cellForItemAtIndexPath:数据源委托中,至少会调用1d数组中的每个项目。 indexPath.section将告诉您哪个数据部分和indexPath.row将告诉您想要的项目。在你的情况下,因为你应该只有1个部分,indexPath.row将是你的1d数组的索引。 (myarray.objectAt(indexPath.row或myarray [indexPath.row])
此数据源协议与UITableViewDatasource完全相同。
再一次,UICollectionView与项目网格的布局无关。 Layout对象为您完成。如果你想要一个项目网格,那么使用FlowLayout。