1

私はObjective-C、GLButtonでカスタムボタンを作成しています。ターゲットアクションデザインパターンに従いたい。だからGLButtonで私は持っています

SEL _action;
NSObject *_target;

- (void) setAction:(SEL) action{
    _action = action;
} 

- (void) setTarget:(NSObject*) target{
    _target = target;
}

そしてそれが呼び出すアクションを実行するために

[_target performSelector:_action];

GLButtonをインスタンス化するクラスには、メソッドがあります

- (void) button1{
    NSLog(@"button1");
}

- (void) button2{
    NSLog(@"button2");
}

次に、それぞれのターゲット/アクションを設定します

[b1 setTarget:self];
[b1 setAction:@selector(button1)];
[b2 setTarget:self];
[b2 setAction:@selector(button2)];

ただし、いずれかのボタンをクリックすると、常に最後のターゲットセット(この場合はbutton2)が起動されます。

これを修正する方法はありますか?

4

1 に答える 1

2

これらのインスタンス変数は、.m ファイルのランダムな場所で宣言されていますか?

SEL _action;
NSObject *_target;

それらはインスタンス変数である必要があり、さらに良いのは @property 宣言である必要があります。

于 2012-10-01T03:07:02.547 に答える