Swift 4で記述し、categoryIdをアクションとして送信する関数を記述しようとしましたが、記述できませんでした。構文が間違っていると思います。パラメータなしで関数を記述した場合、問題はありませんが、パラメータ関数でエラーが出ますが、セレクタの使い方を教えてください。
@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メソッドを参照していないというエラーが表示されます。
セレクタを直接使用してパラメータを渡すことはできないと思います。このようなことを試してみて、handleTap(modelObj:myModelObj)を呼び出す@objcメソッドを作成する必要があります。
@objc func someMethod() { // name this properly!
handleTap(modelObj: myModelObj)
}
次に、これをセレクターとして渡すことができます。
#selector(someMethod)