-2

わかりましたので、Objective-C: 複数の引数を指定してセレクターを呼び出すことはできますが、これをaddTarget:action:forControlEvents:for aで行うにはどうすればよいUIButtonですか? 持ってwithObject:いないものはないと思います... どうすればいいですか?

4

2 に答える 2

1

複数のarugmentを渡す場合は、 arugmentUIButtonを渡す必要がありますDictionary

それを処理する2つの方法があります:

  1. インスタンス変数を使用して、使用する値を保持できます。

例えば ​​:

- (void)buttonPressed:(id)sender
{
    NSMutableDictionary *argDictionary = _ivar;
}

2.カテゴリを使用してプロパティを偽造することができます。

カテゴリ内のプロパティを偽造する方法については、次を参照してください:http: //oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/

そして、あなたは使用することができます:

- (void)buttonPressed:(UIButton *)sender
{
    // use sender.argDictionary to get your fake property
}

あなたが前に私の答えを見ることができるより多くの情報

于 2013-03-14T05:25:45.537 に答える
0

1 つの可能性は、渡す必要があるすべてのプロパティを含むカスタム UIButton 拡張インターフェイスを作成し、ボタンの作成時にボタンのそのプロパティを設定し、アクションが呼び出された後にそれにアクセスすることです。例えば:

@interface UIButton (additions)

@property NSString * customPropertyString;

@end

次に、ターゲットとセレクターを通常の方法で追加します。

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

そして最後に、ハンドラー メソッドの実装:

- (void)buttonPressed:(id)sender
{
    UIButton * senderButton = (UIButton *)sender;
    NSLog(@"%@", senderButton.customPropertyString);
}
于 2013-03-14T01:56:59.287 に答える