我有一个一维矢量图像(大约3000幅),我想将其映射到UICollectionView中。我在实现委托方法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非常令人困惑。看来,它应该是一堆串联的整数,但是我的数据源是一个1D数组,我不知道如何从NSIndex中提取索引,因为所有教程都使用诸如AssetsArray或2D数组之类的内容,而NSIndex的文档只是显示了一堆数组,而不是如何在单个数组中使用它。
谢谢!
好的,来自UICollectionViewDatasouce协议的NSIndexPath只是一个节和行对,而不是一个网格。您是否实现了数据源方法collection:numberOfItemsInSecion和numberOfSectionsInCollection。您必须先执行这些操作。处理cellsForItemAtIndexPath。
因此,以您的情况为例,* numberOfItemsInCollection将返回1。这意味着只有1个数据段。然后* collection:numberOfItemsInSection将返回您的1d数组的计数。indexPath对象具有section和row属性。因此,如果您的numberOfItemsInCollection返回4(意味着有4个数据部分),则collection:NumberOfItemsInSection将被调用4至少4次。每次,indexPath.section都会告诉您collectionView需要为其计数的数据的哪一部分。
在collection:cellForItemAtIndexPath:数据源委托中,至少会为您的1d数组中的每个项目调用该方法。indexPath.section将告诉您数据的哪个部分,而indexPath.row将告诉您想要的项目。在您的情况下,由于您应该只有1个部分,因此indexPath.row将成为您1d数组的索引。(myarray.objectAt(indexPath.row或myarray [indexPath.row])
该数据源协议与UITableViewDatasource完全一样。
再说一遍,UICollectionView与项目网格的布局无关。Layout对象可以为您完成此任务。如果要使用项目网格,请使用FlowLayout。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句