2012-04-06 10 views
0

私はおそらくここでの基本が欠落しています... Xcode 4.2でInterface Builderを使用して、一度に複数のオブジェクトをメソッドにリンクする方法はありますか?Xcode 4.2で一度に複数のオブジェクトをリンクするには?

私は、UIViewにたくさんのUIButtonsを設定しました。それらのすべては、送信者に応じて異なる何かを行うべき1つの方法(- (IBAction)buttonPushed:(UIButton *)aButtonと言う)を呼び出します。私は一度にそれらをすべて自分の方法でリンクする方法を理解できません。アドバイスは非常に高く評価されます。

N.B.ストーリーボードなしで、Snow LeopardでXcode 4.2を使用しています。

+1

私はIBのやり方を考えることができません...私は "トンのUIButtons"はあまり考えられていないと思います。 :) viewDidLoadを使用してコード内で行うことができると思います。サブビューを調べたり、ボタンを探したり、ターゲット/アクションの動作を設定したりできます。 –

+0

えっ!あなたは、addTargetを使用していることを意味しますか?:forControlEvents:in forループ?良いアイデア!!! – Beppe

+1

青い線を各ボタンにドラッグするだけで、多くのボタンにIBActionsを割り当てることができます。 – CodaFi

答えて

0

IBを使ってXcode 4.2で一度に複数のオブジェクトをリンクすることはできないようです。

Phillip Millsが最初に示唆したように、私のコードでforループが終了しました(彼のコメント+1)。ここで

私のコード:

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

あなたの助けのおかげ皆!!!

0

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

  1. はあなたのIBActionはあなたが
  2. 各ボタンのための方法に(または他の目的のアクション)「の内部をタッチアップ」あなたは各ボタン
  3. 上のタグ値を設定して添付し
  4. を定義していますあなたのIBActionで

    あなたが送信者からタグを取得し、それに応じて

    - (IBAction)buttonPressed:(id)sender; 
    { 
        NSInteger tag = [sender tag]; 
        // switch statement or some other check against tag value 
    } 
    
+0

これは実際に私がやっていることですが、私の目標は、ポイント2をスピードアップし、各ボタンのリンクを避けることです...(とにかく、私はあなたの時間と労力を感謝します) – Beppe

+0

ああ、あなたの質問を誤解。私はIBがこのように複数の選択を可能にするとは思わない。コードを使ってこれを達成することもできますが、それもあなたの質問ではありません。 Goodluck –

+0

@RyanCrewsは間違ったことは言及していませんでした。誰が彼を落としたのか分かりません。しかし、私は彼にupvoteを与えるでしょう。 Beppeは彼が既にタグを使用したことは言及しなかった。だから、この答えは正しいだけです。 –

0

A foの行動rループは良いアイデアかもしれません。このような何かをあなたのボタンに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から来て、これは私が何ができる最善であることは少しラフだとコンパイルしないかもしれませんが、あなたはその要旨を得ます。)。

関連する問題