Ios 检测UITableView何时滚动到底部

Ios 检测UITableView何时滚动到底部,ios,swift,uitableview,Ios,Swift,Uitableview,当UITableView的一个实例[在Swift中]滚动到底时,下面的帖子仍然是公认的检测方式吗?或者从那时起它是否被更改(如:改进) 谢谢。试试这个 func scrollViewDidScroll(_ scrollView: UIScrollView) { let height = scrollView.frame.size.height let contentYoffset = scrollView.contentOffset.y let distanceFro

当UITableView的一个实例[在Swift中]滚动到底时,下面的帖子仍然是公认的检测方式吗?或者从那时起它是否被更改(如:改进)

谢谢。

试试这个

 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")
    }
}
斯威夫特3

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row + 1 == yourArray.count {
        print("do something")
    }
}
斯威夫特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

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

这应该适用于任何数量的章节

谢谢@Anbu.Karthik。我也可以。我感到震惊的是,2016年还必须使用这些原始方法,但就这样吧。是什么阻止了工程师们引入“func scrollviewdidcrolltobottom”功能?别担心@Anbu.Karthik,我只是在呻吟。@Anbu.Karthik您的回答帮助我确定了表格的滚动(表格的末尾)。我想这就是原因。如果表中有标题,此解决方案不起作用。我必须将if条件更改为
if distance from bottom此解决方案仅在有1个部分时有效。当有更多的部分时,左手边的行需要累加。这似乎是解决这个问题的最好办法me@kjoelbro整个
indexPath
都很方便。如果indexath.section==COUNT\u of\u SECTIONS-1{if indexath.row+1==LAST\u DATA\u SET.COUNT{print(“做点什么”),您可以轻松确定tableview的结尾在哪里
它可以工作,但有点难看..或者它看起来不对劲。我们需要类似于
didDisplay cell
的东西,但不幸的是没有类似的东西。我相信tableView会对它最初加载的每个单元格调用此方法。例如,如果有26个单元格,它第一次加载13个单元格,它会在第一次重新加载数据时调用此方法13次a()调用。因此,如果您有13个单元格,它加载了13个单元格,它将调用willDisplay,您将得到一个假阳性,表示用户已到达底部。我相信……请有人确认
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
    }
}