UTableView 当前可见单元格 indexPath.row

时间:2021-02-25 03:35:20

标签: swift uitableview

我想要屏幕上当前可见单元格的 indexPath.row(目前我让单元格填满整个屏幕,所以它应该只有一个)

print(tableView.indexPathsForVisibleRows)

//PRINT OUT
Optional([0, 0]) -row 0, screen just loaded
Optional([[0, 0], [0, 1]]) -row 1
Optional([[0, 1], [0, 2]]) -row 2
Optional([[0, 2], [0, 3]]) -row 3
Optional([[0, 2], [0, 3]]) -row 2 (scrolled back up)

print(tableView.visibleCells)
[]-not working
[]-not working

我尝试了上面的代码,但是如何只获得 Y(行)号?当我滚动时它也会打印出数组。如何只获取当前可见的单元格?

我不能使用 cellForRowAt: indexPath。

1 个答案:

答案 0 :(得分:0)

您应该尝试获取表格的中心位置,然后将其转换为该位置的单元格的 indexPath。在scrollViewDidEndDecelerating

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
  let visibleIndexPath = tableView.indexPathForRow(at: CGPoint(x: tableView.bounds.midX, y: tableView.bounds.midY))
  // do whatever you want with your indexpath
}
相关问题