我在这里看到了一个有点类似的问题: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]
...
}
关于如何进行这种转变有什么想法吗?
最佳答案
弄清楚怎么做:
-(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...
}
关于ios - UICollectionView 水平滚动,数据从左向右流动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895282/