How to determine if the user has scrolled to the bottom of the UITableView?

后端 未结 3 1195
夕颜
夕颜 2021-02-14 03:36

How can I determine if the user has scrolled to the last cell/bottom of a UITableView?

相关标签:
3条回答
  • 2021-02-14 03:57

    UITableView inherits from UIScrollView, and scroll view exposes a contentOffset property (documentation here).

    Use this with a bit of math to determine if the contentOffset is within frame.size.height of the bottom.

    Update: here's a stab at a formula that will give you what you want:

    if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
      //user has scrolled to the bottom
    }
    
    0 讨论(0)
  • 2021-02-14 04:03

    Use NSArray *paths = [tableView indexPathsForVisibleRows];. Then check if the last object in that array is the indexPath for the final cell.

    Source: Another Question

    0 讨论(0)
  • 2021-02-14 04:05

    Thanks to newer iOS versions, there's an easy way with the willDisplayCell function:

    func tableView(tableView:UITableView, willDisplayCell cell:UITableViewCell, forRowAtIndexPath indexPath:NSIndexPath) {
    
           if (indexPath.row >= tableView.numberOfRowsInSection(0)) {
    
               NSLog("User got to bottom of table")
    
           } 
    }
    

    Note that UICollectionViews have a similar function:

    func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
    
    }
    
    0 讨论(0)
提交回复
热议问题