我尝试使用传递参数的动作创建一个长按手势识别器但是我遇到了这个错误:
'#selector'的参数不是指'@objc'方法,属性, 或初始化程序
我到目前为止唯一尝试的是在@objc
函数的开头添加removeDate
,因为另一篇帖子没有运气。
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(removeDate(deleteIndex: 3)))
longPressRecognizer.minimumPressDuration = 1.00
cell.addGestureRecognizer(longPressRecognizer)
func removeDate(deleteIndex: Int) {
if deleteIndex != 0 {
dates.remove(at: deleteIndex - 1)
}
}
答案 0 :(得分:1)
您无法通过GestureRecognizer
操作传递任何其他对象,它将允许您传递唯一的UIGestureRecognizer
对象。如果你想要长按单元格的索引,那么你可以尝试这样。
首先设置UILongPressGestureRecognizer
这样的动作。
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(removeDate(_:)))
longPressRecognizer.minimumPressDuration = 1.00
cell.addGestureRecognizer(longPressRecognizer)
现在就像这样设置removeDate
动作。
func removeDate(_ gesture: UILongPressGestureRecognizer) {
if gesture.state == .began {
let touchPoint = gesture.location(in: self.tableView)
if let indexPath = self.tableView.indexPathForRow(at: touchPoint) {
print(indexPath)
dates.remove(at: indexPath.row)
self.tableView.reloadData()
}
}
}