在集合中一次滚动一个单元格查看

时间:2016-06-14 09:23:13

标签: ios objective-c

使用willDisplayCell方法,我得到了最后一个可见单元格的索引:

- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {       
   indexVisibleCell = [indexPath indexAtPosition:[indexPath length] - 1];
}

其中indexVisibleCell是在类'接口中声明的NSUInteger。我的问题是,当用户点击右侧或左侧按钮时,我只想移动一个单元格。我已为此目的应用此代码:

- (IBAction)rightButton:(id)sender {
    NSUInteger indexOfScrolledCell;
    indexOfScrolledCell = indexVisibleCell;

  if (indexVisibleCell < 9) {            
        NSIndexPath *path = [NSIndexPath indexPathForRow:indexOfScrolledCell+1 inSection:0];

        [self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];            
    }     
}

因为我一次显示3个细胞。通过使用rightButton动作方法,它一次移动3个单元,而不是一个。请帮我弄清楚如何滚动一个单元格。

3 个答案:

答案 0 :(得分:4)

尝试在启用分页的情况下使用UICollectionView。请尝试以下代码,希望它能为您解决。

[yourCollectionView setPagingEnabled:YES];

答案 1 :(得分:1)

使用visibleCells获取可见的单元格,获取最左边的Cell索引以找出下一个索引,然后滚动到左侧的Cell(与代码类似的逻辑)。
willDisplayCell不可靠,因为当您向左/向右滚动时会调用它,并且您认为索引是左/右最不正确。

编辑:
或者您需要正确地比较willDisplayCell中的索引,以根据您的逻辑获得正确的左/右索引。

答案 2 :(得分:0)

对于右键,您可以使用以下

[self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionRight animated:YES];

以及

后面的左键
[self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];

我正在更改UICollectionViewScrollPosition,以便当您向右滚动时,新项目会显示在集合视图的右侧,当您向左滚动时,新项目会显示在集合视图的左侧。