Iphone 滚动后在UITableView中检测当前顶部单元格
一个简单的问题,但我似乎没有合适的术语来搜索它 我有一个没有分区的UITableView,用户可以在这个tableview中上下滚动一长串数据(行) 问题:在用户滚动后,如何检测最顶端的单元格行数。Iphone 滚动后在UITableView中检测当前顶部单元格,iphone,objective-c,cocoa-touch,ipad,uitableview,Iphone,Objective C,Cocoa Touch,Ipad,Uitableview,一个简单的问题,但我似乎没有合适的术语来搜索它 我有一个没有分区的UITableView,用户可以在这个tableview中上下滚动一长串数据(行) 问题:在用户滚动后,如何检测最顶端的单元格行数。 (例如,如果用户向下滚动30个单元格,滚动后的顶部单元格为=30)您可以尝试使用UITableView的-indexPathsForVisibleRows或-indexPathForRowAtPoint 例如,假设您希望在停止拖动表时打印最上面可见单元格的indexPath。你可以这样做: - (v
(例如,如果用户向下滚动30个单元格,滚动后的顶部单元格为=30)您可以尝试使用
UITableView
的-indexPathsForVisibleRows
或-indexPathForRowAtPoint
例如,假设您希望在停止拖动表时打印最上面可见单元格的indexPath。你可以这样做:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSIndexPath *firstVisibleIndexPath = [[self.tableView indexPathsForVisibleRows] objectAtIndex:0];
NSLog(@"first visible cell's section: %i, row: %i", firstVisibleIndexPath.section, firstVisibleIndexPath.row);
}
适用于Swift 3.0
let topVisibleIndexPath:IndexPath = self.tableView.indexPathsForVisibleRows![0]
您可以获得可见行的索引路径
NSArray* indexPaths = [tableView indexPathsForVisibleRows];
然后使用compare:
NSArray* sortedIndexPaths = [indexPaths sortedArrayUsingSelector:@selector(compare:)];
然后获取第一个元素的行
NSInteger row = [(NSIndexPath*)[sortedIndexPaths objectAtIndex:0] row];
这是Swift 3+代码:
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
let firstVisibleIndexPath = self.tableView.indexPathsForVisibleRows?[0]
print("First visible cell section=\(firstVisibleIndexPath?.section), and row=\(firstVisibleIndexPath?.row)")
}
在Swift 4中:
func tableView(tableView:UITableView,willDisplay单元格:UITableView单元格,forRowAt indexath:indexPath){
让firstVisibleIndexPath=self.tableview.indexPathsForVisibleRows?[0]
打印(“顶部可见单元格部分为\”([firstVisibleIndexPath!.section]))
}
我会对数组进行排序,因为文档中没有(据我所知)说明索引路径是按升序排序的。这是一个不同的问题,但请检查tableView ScrollToRowtaIndexPath
注意,[self.tableView IndexPaths ForVisibleRows]
当用户滚动启用弹跳功能的表格视图时,可能为空,就像小鸡在加速一样。因此,请确保检查该方法是否返回了至少1个索引路径。此解决方案适用于UICollectionView
s以及UITableView
s