如何从表视图的单元格中的图像手势获取indexPath

时间:2019-10-11 16:58:50

标签: ios swift uitableview uigesturerecognizer

我在单元格中有图像,为此图像添加了手势识别器。从表格中删除单元格后,删除的单元格下面的单元格的indexPath不正确,这会导致应用崩溃。

当点击单元格内的图像时,如何从手势识别器获取indexPath?

我进行了很多搜索,但找不到可行的解决方案。下面是我现在的代码。该代码返回错误的行。

P.S。请不要建议在“图片”顶部添加按钮,因为我已经知道了这一点。

@objc func imageTapped(_ gesture:UITapGestureRecognizer){

    guard let indexPath = myTableView.indexPathForRow(at: gesture.location(in: gesture.view)) else {
        print("Error: indexPath)")
        return
    }

    print("indexPath.row: \(indexPath.row)")
}

2 个答案:

答案 0 :(得分:0)

@objc func imageTapped(_ gesture:UITapGestureRecognizer){
    guard let indexPath = myTableView.indexPathForRow(at: gesture.location(in: gesture.view)) else {
        print("Error: indexPath)")
        return
        else{
           path.indexPath(int x);
        }
    }
    print("indexPath.row: \(indexPath.row)")
}

答案 1 :(得分:0)

好吧,您需要稍微更改代码而不是笔势。view需要在tableView中找到位置

@objc func imageTapped(_ gesture:UITapGestureRecognizer){

guard let indexPath = myTableView.indexPathForRow(at: gesture.location(in: self.tableView)) else {
    print("Error: indexPath)")
    return
}

print("indexPath.row: \(indexPath.row)")

}

如果问题仍然存在,您可以像这样将标签赋予imageView

imageview.tag = indexPath.row //place it in cellForRow

//place below lines in gesture handler
guard let view = sender.view else {return}
let indexPath = IndexPath(row:view.tag, section: 0) //only works if section remains same/ unique