2017-09-19 15 views
0

これは私のボタンアクションが含まれている機能です//プログラム的関数にパラメータを渡す

func didSetCategory(info: FitnessCenterModel) { 
    myButton.addTarget(self, action: #selector(Function(d: info)), for: .touchUpInside)  
    } 

//ボタンのターゲットのための私のセレクタ機能が

func Function(d:FitnessCenterModel) { 
print(info) 
} 

しかし、私が通過することはできませんよコンパイラがエラーをスローしているので、"引数 '#selector'は '@Objc'メソッド、プロパティ、または初期設定子を参照しません。

答えて

1

sele ctorはのメソッドを参照していませんが、のメソッドだけを呼び出します。あなたはここで何をしている

は:

#selector(Function(d: info)) 

Functionに引数を渡すと、このからセレクタを作成しています。あなたはこれをすることはできません。セレクタは引数を持たない必要があります。では、どうすれば infoパラメータを渡すのですか?

selectedCategoryと呼ばれる自分のクラスのプロパティを作成します。

var selectedCategory: FitnessCenterModel! 

あなたがaddTargetを呼び出す前に、上記のプロパティにinfoを割り当てる:

selectedCategory = info 

はパラメータでFunctionを呼び出す別の方法を作成します。

func buttonClicked() { 
    Function(d: selectedCategory) 
} 
セレクタとして buttonClickedを使用するように addTarget呼び出しに変更し

:スイーパー@

#selector(buttonClicked) 
+0

おかげで、あなたは私にこの問題についての詳細を言うだろうか..? –

+0

@AnilKumarどのような問題がありますか?あなたは関連する投稿である特定の質問をしていますか?はいの場合はお気軽にお問い合わせください! – Sweeper

+0

質問と同じように、送信者をセレクタのパラメータとして渡すことはできますが、同じようにパラメータを渡すことはできません。 –

関連する問題