0

手動で作成:

[btnRun addTarget:self action:@selector(RunApp:) forControlEvents:UIControlEventTouchUpOutside];

プログラムで構築: 次のような ??

- (void) setRunButton:(UIButton*)objectName mySelector:(NSString*)funcName myControlEvent:(NSString*) controlEvent
{
    [objectName addTarget:self action:@selector(funcName) forControlEvents:controlEvent];
}
4

2 に答える 2

3

次のようなものが必要になると思います。

- (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];

}
于 2012-06-24T04:10:00.060 に答える
1

セレクター全体をパラメーターとして渡す

- (void) setRunButton:(UIButton*)objectName mySelector:(SEL)action myControlEvent:(NSString*) controlEvent
{
    [objectName addTarget:self action:action forControlEvents:controlEvent];
}
于 2012-06-24T04:07:27.780 に答える