滚动时获取UITableView单元格的indexPath

时间:2016-06-21 20:06:50

标签: ios tableview

当您在tableview中滚动时,它不会在您的手指所在的单元格上开始表委托方法didSelectRowAtIndexPath方法。如果我要点击该调用,而不是向上/向下滑动,它会使用委托方法向我授予indexPath。

我想知道在滚动tableView时是否可以获取手指所在的单元格的indexPath。这可能吗?

2 个答案:

答案 0 :(得分:2)

我猜您可以访问表格视图的panGestureRecognizer(因为它是一种滚动视图)并从中获取locationInView:。然后,您可以要求表视图将其转换为indexPathForRowAtPoint:的索引路径。

答案 1 :(得分:2)

这可能是要走的路:

class TableViewController: UITableViewController {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 50
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("Cell")
        if cell == nil {
            cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell")
        }

        cell.textLabel?.text = "\(indexPath.row)"

        return cell
    }

    override func scrollViewWillBeginDragging(scrollView: UIScrollView) {
        let location = scrollView.panGestureRecognizer.locationInView(tableView)
        guard let indexPath = tableView.indexPathForRowAtPoint(location) else {
            print("could not specify an indexpath")
            return
        }

        print("will begin dragging at row \(indexPath.row)")
    }

}