che*_*ewy 38 iphone cocoa-touch objective-c uitableview ipad
一个简单的问题,但我似乎没有正确的术语来搜索Stackoverflow.
我有一个没有部分的UITableView,用户可以向上和向下滚动此tableview中显示的一长串数据(行).
问题:如何在用户滚动后检测到最顶部的单元格行号.(例如,如果用户向下滚动30个单元格,则滚动后的顶部单元格= 30)
phi*_*phi 71
你可以尝试使用UITableView's -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);
}
Run Code Online (Sandbox Code Playgroud)
对于Swift 3.0
let topVisibleIndexPath:IndexPath = self.tableView.indexPathsForVisibleRows![0]
Run Code Online (Sandbox Code Playgroud)
jba*_*100 31
您将获得可见行的索引路径
NSArray* indexPaths = [tableView indexPathsForVisibleRows];
Run Code Online (Sandbox Code Playgroud)
然后使用排序 compare:
NSArray* sortedIndexPaths = [indexPaths sortedArrayUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)
然后获取第一个元素的行
NSInteger row = [(NSIndexPath*)[sortedIndexPaths objectAtIndex:0] row];
Run Code Online (Sandbox Code Playgroud)
这是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)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30800 次 |
| 最近记录: |