2009-03-07 13 views
2

複数のボタンがIBOutletを呼び出す場合、IBOutletはどのボタンが押されたかを判別できますか?目的C IBOutlets

編集:

すべての固定およびアップ有線。キーポイント:オブジェクトIDは送信者タグではありません!タグは、属性の最初のページのスタンドアロン値です。

- (IBAction)buttonPressed:(id)sender 
{ 
    switch ([sender tag]) 
    { 
     case 109: 
      NSLog(@"Button 1"); 
      break; 

     case 108: 
      NSLog(@"Button 2"); 
      break; 
    } 
} 

答えて

2

通常、コントローラで呼び出すIBActionメソッドにボタンイベント(タッチダウン)を接続します。

-(IBAction) doStuff:(id)sender; 

そして、「送信者が」必要であれば、呼び出しを行うオブジェクトの身元を確認するために使用することができます

メソッドプロトタイプは次のようになります。

IBOutletを使用してコードからUIButtonにアクセスし、そのテキストやプロパティを設定します。

+0

- のbuttonPressed(IBAction):(ID)、送信者 {\tスイッチ([送信者タグ]) \t {\t \tケース109: \t \t \tのNSLog(@ "ボタン1")。 \t \t \t break; \t \t \t \t \tケース108: \t \t \tのNSLog(@ "ボタン2")。 \t \t \t break; \t} IBのオブジェクトIDは送信者タグですか?上記の方法を追加しました。私は特定の配線をしなかった。 \t \t \t } – Alan

5

複数のボタンが多分IBOutlet

IBActionを呼び出す場合には?

モミすべて

- (IBAction) actionPerformed:(id)sender 

はそう、送信者があなたのボタンであれば

二つ目は、あなたがそれを

int tag = [sender tag]; 
を使用できるようにするUIViewのすべてのサブクラスは、 タグフィールドを持っているということです

IBでタグを設定することができます

0

あなたのUIの各ボタンにIBActionメソッドを定義する方がいいです。 次に、IBを使用してメソッドにボタンを個別に配線し、コードにconst整数をハードコーディングしないようにできます。