How can I determine if the user has scrolled to the last cell/bottom of a UITableView?
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
}
Use NSArray *paths = [tableView indexPathsForVisibleRows];
. Then check if the last object in that array is the indexPath for the final cell.
Source: Another Question
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) {
}