web-dev-qa-db-ja.com

Swift 4複数のパラメーターを持つセレクターの使用

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メソッドを参照していないというエラーが表示されます。

7
Akif Demirezen

セレクタを直接使用してパラメータを渡すことはできないと思います。このようなことを試してみて、handleTap(modelObj:myModelObj)を呼び出す@objcメソッドを作成する必要があります。

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

次に、これをセレクターとして渡すことができます。

#selector(someMethod)