我有一个表视图,我需要在表视图的最顶部(0,0)传递的行的索引路径,我尝试使用indexPathForRow(at :),它期望一个cgpoint,我尝试CGPoint.zero来获取行,但是indexPath始终为nil,我读到我需要使用scrollView的偏移量,并且该点必须在局部坐标中,但到目前为止没有运气
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let cgPoint = CGPoint.zero
let indexPath = tableView.indexPathForRow(at: cgPoint)
}
感谢您的帮助!
答案 0 :(得分:0)
由于您的观点不在tablview范围内,所以这将是零的原因可能只有一个。
Apple文档:
表示与点关联的行和部分的索引路径;如果该点超出任何行的边界,则为nil。 点在表格视图的局部坐标系中(表格视图的边界)。
尝试一下。
let cgPoint = CGPoint.zero
if self.tableView.frame.contains(cgPoint) {
print("point exist so indexpath should exist")
}
答案 1 :(得分:0)
您需要先将(0,0)转换为表格视图的边界坐标,如下所示:
// Take (0,0) from parent view, find where it locates in table view's bounds
let p = tableView.superview!.convert(.zero, to: tableView)
guard let ind = tableView.indexPathForRow(at: p) else { return }
let cell = tableView.cellForRow(at: ind)! // Do what you want