Является ли следующая публикация еще принятым способом обнаружения, когда экземпляр UITableView прокручивается донизу [в Swift] или он был изменен (как в: улучшен) с?
Проблема обнаружения, если UITableView прокручивается снизу
Спасибо.
Является ли следующая публикация еще принятым способом обнаружения, когда экземпляр UITableView прокручивается донизу [в Swift] или он был изменен (как в: улучшен) с?
Проблема обнаружения, если UITableView прокручивается снизу
Спасибо.
попробуй это
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let height = scrollView.frame.size.height
let contentYoffset = scrollView.contentOffset.y
let distanceFromBottom = scrollView.contentSize.height - contentYoffset
if distanceFromBottom < height {
print(" you reached end of the table")
}
}
или вы можете найти таким образом
if tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height) {
//you reached end of the table
}
Swift 3
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row + 1 == yourArray.count {
print("do something")
}
}
В Swift 4
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let isReachingEnd = scrollView.contentOffset.y >= 0
&& scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)
}
Если вы реализуете расширяемый UITableView/UICollectionView
, вам может потребоваться проверить scrollView.contentSize.height >= scrollView.frame.size.height
Мы можем избежать использования scrollViewDidScroll
и использовать tableView:willDisplayCell
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.section == tableView.numberOfSections - 1 &&
indexPath.row == tableView.numberOfRows(inSection: indexPath.section) - 1 {
// Notify interested parties that end has been reached
}
}
Это должно работать для любого количества разделов.