0

私はおそらくここで基本を見逃しています...Xcode4.2のInterfaceBuilderを使用して、一度に複数のオブジェクトをメソッドにリンクする方法はありますか?

UIViewに大量のUIButtonを設定しました。- (IBAction)buttonPushed:(UIButton *)aButtonそれらはすべて、送信者に応じて異なることを行う必要がある1つのメソッド(たとえば)を呼び出すだけです。一度にすべてを自分のメソッドにリンクする方法がわかりません。どんなアドバイスも大歓迎です...

注意:ストーリーボードなしで、SnowLeopardでXcode4.2を使用しています。

4

3 に答える 3

0

It seems it is not possible to link more than one object at a time in Xcode 4.2 using IB.

I ended up with a for loop in my code, as first suggested by Phillip Mills (+1 to his comment).

Here my code:

for (UIButton *aButton in [self.view subviews]) {
    [aButton addTarget:self
                action:@selector(buttonPushed:)
      forControlEvents:UIControlEventTouchUpInside];
}

Thanks everybody for your help!!!

于 2012-04-08T06:58:11.177 に答える
0

forループは良い考えかもしれません。ボタンの NSArray を保持し、次のようにします。

for (int i = 0; i < [myArray count];  i++) {
    [(UIButton*)[myArray objectAtIndex:i] addTarget:self action:@selector(buttonPushed:) forControlEvents:UIControlEventTouchUpInside];
    [(UIButton*)[myArray objectAtIndex:i]setTag:i];
}

(私のiPhoneから来ました。これは私ができる最善の方法です。少し大まかで、コンパイルできないかもしれませんが、要点はわかります)。

于 2012-04-06T23:36:33.470 に答える
0

これはうまくいくはずです。つまり、あなた

  1. IBAction を定義する
  2. 各ボタンのメソッドに「内部のタッチアップ」(またはその他の必要なアクション)を追加します
  3. 各ボタンにタグ値を設定します
  4. あなたの IBAction では、送信者からタグを取得し、それに応じて行動します

    - (IBAction)buttonPressed:(id)sender;
    {
        NSInteger tag = [sender tag];
        // switch statement or some other check against tag value
    }
    
于 2012-04-06T22:58:13.810 に答える