Как определить, прокручивается ли пользователь до последней ячейки/нижней части UITableView?
Как определить, прокручивается ли пользователь в нижней части UITableView?
Ответ 1
UITableView наследует от UIScrollView, а просмотр прокрутки предоставляет свойство contentOffset
(документация здесь).
Используйте это с небольшим количеством математики, чтобы определить, находится ли contentOffset в пределах frame.size.height
внизу.
Обновление: вот удар по формуле, которая даст вам то, что вы хотите:
if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
//user has scrolled to the bottom
}
Ответ 2
Используйте NSArray *paths = [tableView indexPathsForVisibleRows];
. Затем проверьте, является ли последний объект в этом массиве indexPath для последней ячейки.
Источник: Другой вопрос
Ответ 3
Благодаря новым версиям 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) {
}