UICollectionView水平滚动,数据从左向右流动

时间:2014-05-27 17:15:12

标签: ios ios7 uicollectionview uicollectionviewlayout

我在这里看到了一个类似的问题: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]
   ...
}

关于如何进行转型的任何想法?

2 个答案:

答案 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