2011-12-07 2 views
2

ビュー上のUIButtonにすべてTouch Up Insideハンドラを使用する方法はありますか?または、Interface Builderを使用して、すべてのボタンを同じデリゲートに設定することはできますか?複数のUIButtonを使用して1つのハンドラ(IB経由)を使用する

+0

私はこの様式で、AndroidとFlashのiOSフォームに移行する人たちとかなり似ています。詳細については、私のポストを参照してください。 –

答えて

4

はい。コントロールは、通常の方法で最初のボタンをヘッダーファイルにドラッグし、アクションを作成します。 .xibファイルで、他の各ボタンをFile's Ownerに接続し、作成したのと同じアクションを選択します。

.xibファイルで、[表示]ペインの[属性インスペクタ]を確認します。各ボタンのタグは個別に設定できます。次に、次のコードを使用することができます...

- (IBAction)myButtons:(id)sender { 

    switch ([(UIButton *)sender tag]) { 
     case 0: 
      // code for first button 
      break; 

     case 1: 
      // code for second button 
      break; 

     case 2: 
      // code for third button 
      break; 

     default: 
      break; 
    } 
} 
2

はい、好きなだけ多くのボタンイベントに同じIBActionを添付できます。アクションを開始した実際のボタンは、IBActionの引数として渡されます。必要に応じて、そこで差別化することができます。

2

ターゲット/アクションと同じIBActionを複数のボタンから作成することは問題ありません。ただ、IB

で複数のものをバインドするプログラムによる同等である:

[button1 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside]; 

[button2 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside]; 
1

確かに、なぜ?コード内の各ボタンから同じIBActionメソッドにドラッグ&ドロップするだけです。しかし、そのメソッドは、すべてのボタンが同じことをしたくないと確信しているので、そのボタンがどれであるか、それが何をすべきかを決定する大量の文で構成する必要があります。

関連する問題