2012-02-23 13 views
0

私はたくさん使われ、いくつかのボタンを返すカスタムヘルパーメソッドを書いています。もちろん、各ボタンにはそれぞれ独自のターゲットセレクタがあり、このメソッドにパラメータとしてセレクタを渡して、返されたボタンに指定されたセレクタがあるようにしたいと思います。メソッド名としてセレクタ名を渡す

しかし、セレクタをメソッドパラメータとして渡す方法がわかりません。このようなもの:

-(returnedInstance)someMethod:(WhatClass?*)selectedFunction{ 

[SomeClassWithASelectorParameter method:whatever selector:@selector(selectedFunction)]; 

} 

ここで、selectedFunctionは、このメソッドに渡されるパラメータです。

私はWhatClass?* NSStringのを作ってみましたし、また、SELが、それはの結果:

[NSInvocation invocationWithMethodSignature:]:あなただけSELを通過しないのはなぜメソッドのシグネチャの引数は

+0

使用を'SEL'はセレクタを渡します。 '@selector(..)'を削除するには 'selectedFunction'を使うだけです。 – HelmiB

答えて

4

nilをすることはできませんか?セレクタである。そのような:また

-(returnedInstance)someMethod:(SEL)selectedFunction{ 
    [SomeClassWithASelectorParameter method:whatever selector:selectedFunction]; 
} 

NSSelectorFromString

-(returnedInstance)someMethod:(NSString*)selectedFunction{ 
    [SomeClassWithASelectorParameter method:whatever selector:NSSelectorFromString(selectedFunction)]; 
} 
+0

+1は両方とも、30秒遅れだった... :) –

+0

Heheありがとう:-)。それは、SOに関する私の好きなことのひとつです。完全で簡潔な答えを維持しながら、他の人たちに答えを競ってください。 – mattjgalloway

+0

私の質問として、私は幸運なしでSELを使ってみました。私が投稿したエラーを取得します。 – johnbakers

1

あなたはSELを使用したい、とあなたはそれを参照するとき、あなたはselector使用する必要はありません。

-(returnedInstance)someMethod:(SEL)selectedFunction{ 

    [SomeClassWithASelectorParameter method:whatever selector:selectedFunction]; 

} 
関連する問題