2017-11-18 15 views
2

Swift 4で記述し、actionとして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(区分:INT){ self.performSegue(withIdentifier: "sequeGoToPackageSelection"、送信者:ゼロ) } @objc FUNC callMethod(){ sendCategoryIdToPackageSelectionVC(区分: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) 
関連する問題