7

ボタンと auxiliarStruct というオブジェクトがある関数 (たとえばfunction1 ) があり、次の行があります。

[btn addTarget:self action:@selector(userSelected:) forControlEvents:UIControlEventTouchUpInside];

しかし @selector(userSelected) では、その関数に必要なオブジェクトをパラメーターとして渡す必要がありますが、それを実装する方法がわかりません。ここでそのオブジェクトを宣言しました:

//UsersController.h
#import <UIKit/UIKit.h>

@interface UsersController : NSObject{
    NSInteger *prof_id;
    NSString *createTime;
    NSString *fullName;
    NSString *thumb;
}

@property (nonatomic) NSInteger *prof_id;
@property (nonatomic, retain) IBOutlet NSString *createTime;
@property (nonatomic, retain) IBOutlet NSString *fullName;
@property (nonatomic, retain) IBOutlet NSString *thumb;

@end

呼び出された関数を次のように宣言しています。

-(void)userSelected:(id)sender{
  //CODE
}

auxiliarStruct というこのクラスのオブジェクトがあり、これが必要です。で試しました

[btn addTarget:self action:@selector(**userSelected:auxiliarStruct**)forControlEvents:UIControlEventTouchUpInside];

しかし、それは動作しません 誰かが私を助けることができます? ありがとう。

ps: 私の英語でごめんなさい、それが悪いことはわかっています

4

3 に答える 3

23

(UIButton*)メソッドを使用して、オブジェクトをパラメーターとしてのみ渡すことができますaddTarget @selector。UIButton タグを設定して、呼び出された関数で使用できます。文字列値を送信するための代替手段を見つけたいと思うかもしれません。

button でタグを渡すには、次のコードを使用します。

     btn_.tag = 10; 
    [btn_ addTarget:self action:@selector(functionName:) forControlEvents:UIControlEventTouchUpInside];

ボタンのアクションは次のようになります。

- (void) functionName:(UIButton *) sender {

    NSLog(@"Tag : %d", sender.tag);

}
于 2012-06-06T08:11:14.167 に答える