检测UITableView何时滚动到底部

时间:2016-08-18 09:59:01

标签: ios swift uitableview

以下帖子是否仍然是可以接受的方式来检测UITableView的实例何时滚动到底部[在Swift中],或者是否已被更改(如:改进)?

Problem detecting if UITableView has scrolled to the bottom

谢谢。

4 个答案:

答案 0 :(得分:51)

试试这个

 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
}

答案 1 :(得分:31)

Swift 3

<a class="ShowHideColumns" [attr.data-columnindex]="i + 1">

答案 2 :(得分:4)

我们可以避免使用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
    }
}

这应该适用于任意数量的部分

答案 3 :(得分:3)

在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