这是我的功能:
func myFunction(sender:UILongPressGestureRecognizer, index: Int){
print(sender.view?.tag)
}
在cellForItemsInSection中,这就是我所做的:
let gesture UILongPressGestureRecognizer()
gesture.addTarget(self, action: #selector(self.myFunction(_:))) //here I want to call the second parameter with the indexPath.row but how?
gesture.view?.tag = indexPath.row
答案 0 :(得分:1)
您无法在UIGestureRecognizer
操作中传递两个参数。
调用的操作方法必须符合以下之一 签名:
- (void)handleGesture;
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;
答案 1 :(得分:0)
像这样:
let gesture = UILongPressGestureRecognizer()
gesture.addTarget(self, action: #selector(myFunction(sender:index:)))
如果您在selector
前加上该类,则可以获得代码完成。
因此,如果您MyViewController
myFunction
,则可以写
gesture.addTarget(self, action: #selector(MyViewController.))
并且代码完成应该可以帮助您,因为您可以在此图像中看到(是的,我在一个名为CreateUserViewController
的类中,但只是忽略它:)
希望对你有所帮助。
@vadian是对的。我会留下这个答案,所以你可以看到如何使用代码完成,但我的答案是不正确的,vadians是。
答案 2 :(得分:0)
@vadian表示,你不能在UIGestureRecognizer动作中传递两个参数。
您只需执行此操作即可在函数中获取indexPath.row
let gesture = UILongPressGestureRecognizer()
gesture.view?.tag = indexPath.row
gesture.addTarget(self, action: #selector(self.myFunction(_:)))
并在myFunction
func myFunction(sender:UILongPressGestureRecognizer){
let tag = sender.view?.tag
//do stuff
}