如何将 tableView.indexPathForRow(at: touchPoint) 与部分一起使用
How do I use tableView.indexPathForRow(at: touchPoint) with sections
我使用部分来加载消息 (viewForFooterInSection) 并使用行来加载特定消息的回复(如果有的话)。
以前我在 tableView 上使用长按手势来检测 tableView 上的触摸和 return 使用 tableView.indexPathForRow(at: touchPoint) 的 indexPath,但是我没有找到类似的获取长按单元格索引路径的方法
有人可以帮忙吗?
当您已经在 tableview 上使用手势获取 indexPath 时,我不确定您为什么要进行单元级手势。如果您尝试从 indexPath 获取单元格,那么您可以尝试
guard let cell = tableView.cellForRow(at: indexPath) else { return }
无论如何来回答你的问题,我们可以通过以下方式从单元格级别获取indexPath。
protocol CustomCellDelegate: AnyObject {
func longPressAction(onCell: CustomCell)
}
class CustomCell: UITableViewCell {
weak var delegate: CustomCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
let lg = UILongPressGestureRecognizer(target: self, action: #selector(longPress))
lg.minimumPressDuration = 0.5
lg.delaysTouchesBegan = true
self.addGestureRecognizer(lg)
}
@objc func longPress(gestureReconizer: UILongPressGestureRecognizer) {
if gestureReconizer.state != UIGestureRecognizer.State.ended {
return
}
delegate?.longPressAction(onCell: self)
}
}
然后在您的行方法的表格视图单元格中,分配委托。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as? CustomCell else { return UITableViewCell() }
cell.delegate = self
return cell
}
并确认您 viewController 中的 CustomCellDelegate 协议。
extension ViewController: CustomCellDelegate {
func longPressAction(onCell: CustomCell) {
guard let indexPath = tableView.indexPath(for: onCell) else { return }
print(indexPath.section, indexPath.row)
}
}
我使用部分来加载消息 (viewForFooterInSection) 并使用行来加载特定消息的回复(如果有的话)。
以前我在 tableView 上使用长按手势来检测 tableView 上的触摸和 return 使用 tableView.indexPathForRow(at: touchPoint) 的 indexPath,但是我没有找到类似的获取长按单元格索引路径的方法
有人可以帮忙吗?
当您已经在 tableview 上使用手势获取 indexPath 时,我不确定您为什么要进行单元级手势。如果您尝试从 indexPath 获取单元格,那么您可以尝试
guard let cell = tableView.cellForRow(at: indexPath) else { return }
无论如何来回答你的问题,我们可以通过以下方式从单元格级别获取indexPath。
protocol CustomCellDelegate: AnyObject {
func longPressAction(onCell: CustomCell)
}
class CustomCell: UITableViewCell {
weak var delegate: CustomCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
let lg = UILongPressGestureRecognizer(target: self, action: #selector(longPress))
lg.minimumPressDuration = 0.5
lg.delaysTouchesBegan = true
self.addGestureRecognizer(lg)
}
@objc func longPress(gestureReconizer: UILongPressGestureRecognizer) {
if gestureReconizer.state != UIGestureRecognizer.State.ended {
return
}
delegate?.longPressAction(onCell: self)
}
}
然后在您的行方法的表格视图单元格中,分配委托。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as? CustomCell else { return UITableViewCell() }
cell.delegate = self
return cell
}
并确认您 viewController 中的 CustomCellDelegate 协议。
extension ViewController: CustomCellDelegate {
func longPressAction(onCell: CustomCell) {
guard let indexPath = tableView.indexPath(for: onCell) else { return }
print(indexPath.section, indexPath.row)
}
}