如何确定用户是否已滚动到UITableView的底部?

时间:2010-07-01 18:32:52

标签: iphone objective-c cocoa-touch uitableview scroll

如何确定用户是否已滚动到UITableView的最后一个单元格/底部?

3 个答案:

答案 0 :(得分:28)

UITableView继承自UIScrollView,滚动视图公开了contentOffset属性(文档here)。

使用此算法来确定contentOffset是否在底部的frame.size.height范围内。

更新:这里有一个可以满足您需求的公式:

if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
  //user has scrolled to the bottom
}

答案 1 :(得分:5)

使用NSArray *paths = [tableView indexPathsForVisibleRows];。然后检查该数组中的最后一个对象是否是最终单元格的indexPath。

来源:Another Question

答案 2 :(得分:1)

感谢更新的iOS版本,使用willDisplayCell功能很简单:

func tableView(tableView:UITableView, willDisplayCell cell:UITableViewCell, forRowAtIndexPath indexPath:NSIndexPath) {

       if (indexPath.row >= tableView.numberOfRowsInSection(0)) {

           NSLog("User got to bottom of table")

       } 
}

请注意,UICollectionViews具有类似的功能:

func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

}