如何从表格视图单元格中的图像手势获取 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的主要内容,如果未能解决你的问题,请参考以下文章
如何从资产中获取不同的图像并将其分配给不同表格视图单元格中的图像视图