使用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个单元,而不是一个。请帮我弄清楚如何滚动一个单元格。
答案 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
,以便当您向右滚动时,新项目会显示在集合视图的右侧,当您向左滚动时,新项目会显示在集合视图的左侧。