次のようなものが必要になると思います。
- (void)setRunButton:(UIButton *)objectName mySelector:(NSString *)action myControlEvent:(UIControlEvents)controlEvent {
[objectName addTarget:self action:NSSelectorFromString(action) forControlEvents:controlEvent];
}
セレクターを として渡すことはめったにありNSString
ませんが、 を使用NSSelectorFromString()
してセレクターの文字列名をセレクターに変換できます。
制御イベントのパラメーターは文字列ではなく、列挙型であるため、myControlEvent
パラメーターをUIControlEvents
型に変更しました。
を使用してセレクターをメソッドに渡す方がより一般的@selector(action)
です。ただし、@selector
コンパイル時に処理されるため、パラメーターは実際にはNSString
. この場合、メソッドは次のようになります。
- (void)setRunButton:(UIButton *)objectName mySelector:(SEL)action myControlEvent:(UIControlEvents)controlEvent {
[objectName addTarget:self action:action forControlEvents:controlEvent];
}