如何获取 uicollectionview 的最后一个索引路径?
Posted
技术标签:
【中文标题】如何获取 uicollectionview 的最后一个索引路径?【英文标题】:How to get the last indexpath of a uicollectionview? 【发布时间】:2015-02-19 19:21:39 【问题描述】:我想获取 uicollectionview 的最后一个 indexpath。
我试过了:
NSInteger section = [self numberOfSectionsInCollectionView:self.collectionView] - 1;
NSInteger item = [self collectionView:self.collectionView numberOfItemsInSection:section] - 1;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section];
但找不到 uicollectionview 的最后一个索引路径。
任何建议, 提前致谢。
【问题讨论】:
代码看起来没问题。 “找不到 uicollectionview 的最后一个索引路径”是什么意思?NSLog(@"%@", indexPath)
的输出是什么?预期的输出是什么?
NSInteger section = [_collectionView numberOfSections] - 1 ; NSInteger item = [_collectionView numberOfItemsInSection:section] - 2 ; NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section] ;这对我来说很好......感谢您的评论
你为什么不从你的 model 创建索引路径呢?这样会感觉更自然,而不是弄乱 view。
【参考方案1】:
NSInteger lastSectionIndex = [tableView numberOfSections] - 1;
NSInteger lastRowIndex = [tableView numberOfRowsInSection:lastSectionIndex] - 1;
// Now just construct the index path
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
【讨论】:
注意NSInteger lastRowIndex = [tableView numberOfRowsInSection:lastSectionIndex] - 1;
如果最后一节有0个项目会崩溃。【参考方案2】:
Swift 3 的答案
extension UICollectionView
func scrollToLastIndexPath(position:UICollectionViewScrollPosition, animated: Bool)
self.layoutIfNeeded()
for sectionIndex in (0..<self.numberOfSections).reversed()
if self.numberOfItems(inSection: sectionIndex) > 0
self.scrollToItem(at: IndexPath.init(item: self.numberOfItems(inSection: sectionIndex)-1, section: sectionIndex),
at: position,
animated: animated)
break
请注意,我的经验表明 animated
属性应该是 false
用于初始化 collectionView。
从上面的代码中,作为您问题的答案,请使用以下方法:
func lastIndexPath() -> IndexPath?
for sectionIndex in (0..<self.numberOfSections).reversed()
if self.numberOfItems(inSection: sectionIndex) > 0
return IndexPath.init(item: self.numberOfItems(inSection: sectionIndex)-1, section: sectionIndex)
return nil
【讨论】:
以上是关于如何获取 uicollectionview 的最后一个索引路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测最后一个单元格是不是在 UICollectionView 中可见?
Swift 3:如何将 UICollectionView 中的最后一行单元格水平居中,只有一个部分?
如何防止重新排序 UICollectionView 中的最后一个单元格?
如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外