2011-08-12 12 views
0

hereに同様の質問がありますが、何らかの理由でそれを動作させることができません。セレクタを通過するパラメータ

私はたくさんのボタンを作成していますので、それらを動的にコードで作成しています。その次のコードは、touchdouwnにそれがaMethodを実行するボタンを作成します。aMethodで

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
      action:@selector(aMethod) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Hello" forState:UIControlStateNormal]; 
button.frame = CGRectMake(40.0, 200.0, 170.0, 40.0); 
[self.view addSubview:button]; 

-(void) aMethod{ 
    //code 
} 

を私は多くのボタンは、その方法を指すので、ウィッヒボタンが押されたかを知りたいです。結果として、私が見えるように私のaMethodが必要:私はエラーを取得するボタンをクリックしたときに

[button addTarget:self 
       action:@selector(aMethod:) 
    forControlEvents:UIControlEventTouchDown]; 

-(void) aMethod:(id) sender{ 
    //code 
} 

私はaMethodを変更した場合、私はのためのセレクタを変更する必要があります。私は、私は、セレクタボタンをPASになることが判明掲示最初のリンクの記事を読んでから、私はにaMethodを変えてみました:

-(void) aMethod:(UIButton*) sender{ 
     //code 
    } 

と私はまだエラーを取得します。セレクタでボタンをどのように渡すことができますか?

+1

へのアクセスができます。あなたはどんなエラーを出していますか? – ColdLogic

+0

申し訳ありませんが、 –

+0

のリンクを修正しました[どのようにセレクタにパラメータを渡すことができますか?](http://stackoverflow.com/questions/4372468/how-can-i-pass-a-parameter-to-aセレクタ) –

答えて

1

私はあなたが何を求めているのかよく分かりませんが、IDは他のオブジェクトを表す任意のオブジェクトです(動的な入力と思われますか?)。セレクタメソッドのデータ型をIDから他のものに変更しないでください。

それがUIButtonsによって発射される方法であれば、あなたはこのようにボタンにアクセス:

-(void) aMethod:(id)sender { 
UIButton *pressedButton = (UIButton *)sender; 
} 

今、あなたが解雇されるセレクタメソッドをトリガーどんなボタンのUIButtonオブジェクトを持っています。

どのボタンがセレクタを起動したかを示す1つの方法として、タグを付けてaMethod:のタグを調べます。あなたは上記のコードを使用してボタンオブジェクトへのポインタを作成した後、pressedButton.tag