2017-11-18 465 views
2

我用Swift 4编写并尝试编写一个函数,发送categoryId作为操作,但我无法写入。我认为我的语法是错误的。如果我写函数没有参数它不是一个问题但我得到参数函数的错误。你能说我如何使用选择器吗?Swift 4使用选择器与多个参数

@objc func sendCategoryIdToPackageSelectionVC(categoryId : Int){ 
     MarketVC.categoryId = categoryId 
     self.performSegue(withIdentifier: "sequeGoToPackageSelection", sender: nil) 
    } 

func addTapFeatures(){ 
     taplabel1 = UITapGestureRecognizer(target: self, action: #selector(self.sendCategoryIdToPackageSelectionVC(categoryId:2))) 
     taplabel1?.cancelsTouchesInView = false 
     self.labelFirst.addGestureRecognizer(taplabel1!) 
} 

我得到一个错误,说动作选择器没有引用任何objc方法。

+0

检查[该线程](https://stackoverflow.com/q/43251708/6541007)或[此](HTTPS:/ /stackoverflow.com/a/24814958/6541007)。 Swift 4没有提及'#selector'的用法。 – OOPer

+0

这可能帮助:https://stackoverflow.com/questions/19703767/pass-parameter-to-uitapgesturerecognizer – ozgur

+0

FUNC sendCategoryIdToPackageSelectionVC(的categoryId:智力){ self.performSegue(withIdentifier: “sequeGoToPackageSelection”,发件人:无) } @objc FUNC callMethod(){ sendCategoryIdToPackageSelectionVC(的categoryId:2) } FUNC addTapFeatures(){ taplabel1 = UITapGestureRecognizer(目标:自,动作:#selector(self.callMethod))? taplabel1 .cancelsTouchesInView =假 } – Yongjoon

回答

0

我想,你不能直接使用选择器来传递参数。 尝试一下这样的事情 你应该创建一个调用handleTap(modelObj:myModelObj)的@objc方法。

@objc func someMethod() { // name this properly! 
    handleTap(modelObj: myModelObj) 
} 

然后就可以通过这作为选择器:

#selector(someMethod)