it-swarm.com.ru

Определить, когда UITableView прокручивается в нижней части

Является ли следующий пост все еще приемлемым способом обнаружения, когда экземпляр UITableView прокручивается до конца [в Swift], или он был изменен (как в: улучшено) с тех пор?

Проблема с обнаружением прокрутки UITableView к дну

Спасибо.

14
Joseph Beuys' Mum

попробуй это 

 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
}
43
Anbu.Karthik

Свифт 3

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row + 1 == yourArray.count {
        print("do something")
    }
}
28
Giang

Мы можем избежать использования 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
    }
}

Это должно работать для любое количество разделов .

1
JPetric

В 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

1
onmyway133