我在这里看到了一个类似的问题:Reorder cells of UICollectionView。但是,该解决方案涉及覆盖UICollectionViewFlowLayout
以重新排序单元格。但在我的情况下,我不想重新排序单元格,而只是相应地转换数据源。
我正在创建一个水平滚动的UICollectionView。默认情况下,项目从上到下排序:
cell1 cell4 cell7 cell10
cell2 cell5 cell8 cell11
cell3 cell6 cell9 cell12
我对细胞的物理流动很好。但是,我希望我的数据从左向右流动:
data1 data2 data3 data4
data5 data6 data7 data8
data9 data10 data11 data12
只需使用indexPath.item
来确定要使用哪些数据就行不通。我必须以某种方式“转换”索引。例如,要显示cell2的内容,我需要使用data5,而不是data2。
有些事情:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
NSInteger index = //Use proper index based on transformed indexPath.item, instead of just indexPath.item
NSDate *cellDate = [self.dateArray objectAtIndex:index]
...
}
关于如何进行转型的任何想法?
答案 0 :(得分:1)
弄清楚如何做到这一点:
-(NSDate*)cellDateBasedOnIndexPath:(NSIndexPath*)indexPath {
NSInteger row = indexPath.item % NUMBER_OF_ROWS + 1;
NSInteger column = indexPath.item/NUMBER_OF_ROWS + 1;
NSInteger itemIndex = row * NUMBER_OF_COLUMNS - (NUMBER_OF_COLUMNS - column) - 1;
//Use itemIndex to index through the data source...
}
答案 1 :(得分:1)
您可以在集合视图的Xcode故事板中,通过取消选中隐藏在属性检查器下拉菜单下的选项,将单元格上的约束设置为不遵守语言方向。 picture of what to uncheck