2009-07-06 14 views
4

私はUIImageViewオブジェクトを持っています。これをクリックするとアニメーションが再生され、複数のオブジェクトを作るために同じコードを再利用したいと思います。送信者タグを設定して別のオブジェクトを認識させるにはどうすればよいですか?uibutton送信者タグ

.H

- (IBAction)startClick:(id)sender; 

.M

- (IBAction)startClick:(id)sender 
{ 
    //UIImageView *theButton = (UIImageView *)sender.tag; 

    bubble.animationImages = [NSArray arrayWithObjects: 
          [UIImage imageNamed: @"Pop_1.png"], 
          [UIImage imageNamed: @"Pop_2.png"], 
          [UIImage imageNamed: @"Pop_3.png"], nil]; 

    [bubble setAnimationRepeatCount:1]; 
    bubble.animationDuration = 1; 
    [bubble startAnimating]; 
} 
+0

(http://stackoverflow.com/questions/1089752/casting-sender-parameter)[Senderパラメータ鋳造]の可能な重複が – kennytm

答えて

3

は、送信者がstartClick法と呼ばれるオブジェクトです。そのオブジェクトをUIImageViewにキャストしてから、そのオブジェクトのタグプロパティを調べて、そのオブジェクトがどれであるかを判断できます。

タグのプロパティをコード内の他の場所に設定する必要があります。 Interface BuilderでUIImageViewsを使用している場合、プロパティウィンドウを使用してタグ番号を入力できます。それ以外の場合は、UIImageViewsを割り当てて初期化するときにタグプロパティを設定します。

+0

+1用魅力のように働く。ありがとう! –

17

[sender tag]を使用してください。

なぜsender.tagと聞かれますか?

senderUIViewのインスタンスとしてキャストする場合は、((UIView *)sender).tagのようにドット表記を使用できます。 UIViewのオブジェクトには、タグプロパティがあります。 senderUIViewのインスタンスとしてキャストしない場合は、NSURLAuthenticationChallengeSenderプロトコルに準拠したidであり、tagプロパティがありません。

ここボタンのタグの使用例は次のとおり

#define kButtonTag 2 

- (void)viewDidLoad { 
    // ... view setup ... 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    // ... button setup ... 

    button.tag = kButtonTag; 

    [super viewDidLoad]; 
} 

- (IBAction)startClicked:(id)sender { 

    if ([sender tag] == kButtonTag) { 
     // do something 
    } 
} 
+0

ありがとうございます!これは、送信側を適切なクラス/オブジェクトにキャストするよりもはるかに高速で、まずタグを取得します。 – tmighty

+0

上記のコードに関する簡単な質問: "#define kButtonTag 2"のコード行は何をしますか? – nfoggia

関連する問題