gpt4 book ai didi

ios - 以编程方式使用 UIButton 滚动到项目 UICollectionView

转载 作者:行者123 更新时间:2023-11-28 20:52:40 24 4
gpt4 key购买 nike

我有一段时间很困惑,无法解决一件非常简单的事情。

我的 CollectionView 有 50 个单元格,我想使用“下一步”按钮和“后退”按钮在单元格之间来回滚动。我知道scrollToItemAtIndexPath方法,但我在找到正确的IndexPath时遇到问题..有人可以帮助我吗?

这是我的代码:

// My personal method

-(void)scrollYearAtIndex:(NSInteger)index {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:index inSection:0];
[_collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}

// Show Next Items
-(void)didScrollNextYear {
[self scrollYearAtIndex:????];
}

// Show Previous Items
-(void)didScrollPreviousYear {
[self scrollYearAtIndex:????];
}

最佳答案

我已经在 Swift 中给出了答案。您可以在 Objective-C 中编写相同的逻辑。

要获取下一个 indexPath,请获取已排序的 indexPathsForVisibleItems 数组的 last indexPath 并加 1 .

要获取前一个 indexPath,请获取已排序的 indexPathsForVisibleItems 数组的 first indexPath 并减 1 .

func didScrollNextYear() {
if let index = self.collectionView.indexPathsForVisibleItems.sorted().last?.row {
let nextIndex = index+1
if nextIndex < self.collectionView.numberOfItems(inSection: 0) {
self.collectionView.scrollToItem(at: IndexPath(row: nextIndex, section: 0), at: .centeredHorizontally, animated: true)
}
}
}

func didScrollPreviousYear() {
if let index = self.collectionView.indexPathsForVisibleItems.sorted().first?.row {
let previousIndex = index-1
if previousIndex >= 0 {
self.collectionView.scrollToItem(at: IndexPath(row: previousIndex, section: 0), at: .centeredHorizontally, animated: true)
}
}
}

关于ios - 以编程方式使用 UIButton 滚动到项目 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56185292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com