2011-08-31 10 views
5

IBActionステートメントで送信者オブジェクトを処理する方法は2つあります。最初は次のようになります。送信者をIDまたは特定のクラスとしてIBActionにキャストする

-(IBAction)buttonPressed:(id)sender{ 
UIButton*someButton=(UIButton*)sender; 
//do something with someButton.tag or whatever 
} 

もう一つはそう簡単に:

-(IBAction)buttonPressed:(UIButton*)sender{ 
    //do something with sender.tag or whatever 
    } 

あなたが知っていれば、私は一般的に、他の上で一つのスタイルを好むバージョン2.任意の特定の理由を選ぶボタンのみということこの方法に送るのですか?

はボタンのように、送信者であること、またはスイッチやスライダーなどのことができるかどうか、バージョン1は良いです、私は見ることができますしかし、あなたは tagのような UIButtonプロパティを探している場合ならば、それは大きな違いをすることはありません

送信者はUIButtonではありません。だからバージョン2ははるかに単純なようです。

はちょうど私が私がバージョン1

+0

は、任意の違いはありませんが、時にはあなたは、多くの異なるオブジェクトに対して同じアクションを使用し、使用していますタグを使用して、どちらが正しいかを選択する必要があります。 Interface Builderは気にしません。 –

答えて

4

を好むための明白な理由が欠けている場合、私は番目のバージョンを使用しても問題を見ていない参照しようと思いました。私は通常、第2のバージョンを使用します。送信者が複数のタイプのオブジェクトである場合は、最初のバージョンのみを使用します。次に、メソッドがどのタイプのオブジェクトを知る必要がある場合、メソッドは送信者を特定の型にキャストする前に送信者に問い合わせることができます。

でもより頻繁に私は、送信者にアクセスする必要が見つからないので、私はちょうど使用:

- (IBAction)buttonPressed { 
    // Do something. 
} 
+0

私はこれに同意します。返信する必要がある場合を除き、送信者をオフのままにしておきます。 –

関連する問題