-1

複数の変数を持つメソッドがあります:

-(void) showImg:(UIBarButtonItem *)sender string1:(NSString *) string2:(NSString *);

値を送信したいNSString(これfunctionは複数の要素に使用されるため)。

actionこれは、パラメーターが不要な場合に追加する方法です。

[myButton addTarget:self action:@selector(showImg) forControlEvents: UIControlEventTouchUpInside];

私はこのようなパラメータを追加してみ@selectorました:

[myButton performSelector @selector(showImg:string1:string2::) withObject:@"-1" withObject:@"-1"];

しかし、これは機能しません。function直接内部に複数のパラメータを使用して自分を呼び出すにはどうすればよい@selectorですか?

4

2 に答える 2

4

次の関数パラメーターを制御するために、中間のUIButton呼び出しを行うことができます(仲介者のように)。function

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[myButton addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];

-(void) buttonTapped:(id)sender{
    if(<some logical condition>){
        [self showImg:sender string1:@"-1" string2:@"-1"];
    }else {
        [self showImg:sender string1:@"otherVal1" string2:@"otherVal2"];
    }
}

-(void) showImg:(id)sender string1:(NSString *)string1 string2:(NSString*)string2 {
    //Other logic
}
于 2012-10-06T21:17:04.807 に答える
0

次の行は間違っています:

[myButton performSelector @selector(showImg:string1:string2::) withObject:@"-1" withObject:@"-1"];

このようなパラメーターをセレクターに渡すことはできません。そのため、エラーが発生します。複数のパラメーターをセレクターに渡すことはできないと思います。const 値を使用してボタンにタグを設定してみてください (整数で動作します)。

例えば ​​:

//Init your button......
[myButton setTag:1];
[myButton addTarget:self action:@selector(showImg:) forControlEvents: UIControlEventTouchUpInside];

- (void)showImg:(id)sender {
  UIButton *btn = (UIButton *)sender;
  int value = btn.tag;
}

ただの提案.. :)

于 2012-10-06T21:13:22.197 に答える