0

UIButton にリンクしようとしているメソッドにパラメータが 1 つしかない場合、addTarget を呼び出すことができ、ボタンをクリックするとコードが正常に実行されます -

[ myDetailButton addTarget:self action:@selector(hideMap:) forControlEvents:UIControlEventTouchUpInside];

(void)hideMap:(NSMutableArray*)arguments

しかし、hideMap メソッドに 2 番目のパラメーターを追加すると、呼び出し時に認識できないセレクター エラーが発生します。

[ myDetailButton addTarget:self action:@selector(hideMap:) forControlEvents:UIControlEventTouchUpInside];

(void)hideMap:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options

この質問によると、addTarget パラメータをどのようにフォーマットしても、このエラーが表示されます-

action:@selector(hideMap)
action:@selector(hideMap:)
action:@selector(hideMap:event:)

addTarget を使用して複数のパラメーターを持つメソッドを呼び出すにはどうすればよいですか?

4

2 に答える 2

2

問題は、辞書とともに入力として NSMutableArray を期待するセレクターを提供していることです。UIButton はこれに同意しません。リンク先の投稿によると、UIBUtton は何も送信しないか、それ自体を ID として送信するか、それ自体とイベントを送信することにのみ同意します。

UIButton コールバックから NSMutableArray と NSMutableDictionary を取得する方法を 100% 確信しているわけではありません。ここで達成しようとしているのは正確には何ですか。何か助けを提案できるかもしれません。

于 2012-11-14T00:25:37.647 に答える
1

問題はあなたの方法が次のとおりです:

-(void)hideMap:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options

そして、メソッド名はではありhideMap:withDict:ませんhideMap:event:

このコードaction:@selector(hideMap:event:)を変更action:@selector(hideMap:withDict:)すると、問題が解決します。

次のような方法はありません:hideMap:event:それが問題です。

于 2012-11-14T04:34:55.513 に答える