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

Posted

技术标签:

【中文标题】如何从表格视图单元格中的图像手势获取 indexPath【英文标题】:How to get indexPath from image gesture in table view's cell 【发布时间】:2019-10-11 16:58:50 【问题描述】:

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

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

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

附:请不要建议在 Image 顶部添加按钮,因为我已经知道这一点。

@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)")

【问题讨论】:

***.com/a/48740036/5820010 我已经看到了那个解决方案。解决方案 3:不起作用,解决方案 2:我想避免,解决方案 1:touchesBegan 不触发。 【参考方案1】:

好吧,你需要稍微改变你的代码而不是手势。你需要在你的 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

【讨论】:

【参考方案2】:
@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)")

【讨论】:

对不起伙计,你能再检查一下你的代码吗,它没有任何意义? 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)" + "yesitdoesmate") 说得通

以上是关于如何从表格视图单元格中的图像手势获取 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

如何从资产中获取不同的图像并将其分配给不同表格视图单元格中的图像视图

如何使用自定义表格视图单元格中识别的点击手势从 UILabel 呈现视图控制器?

如何从单元格中另一个项目的手势获取单元格引用

在tableview自定义单元格中的图像上长按手势

Swift - 将手势识别器添加到表格单元格中的对象

图像在表格视图单元格中下载后调整大小