uibutton发件人标签

时间:2009-07-06 18:19:01

标签: iphone xcode

我有一个UIImageView对象,点击它会播放动画,我想重复使用相同的代码来制作多个对象。如何设置发件人标签以使其知道其不同的对象?

·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];
}

2 个答案:

答案 0 :(得分:17)

使用[sender tag]

为什么不sender.tag,你问?

如果您将sender转换为UIView的实例,则只能使用点表示法,如((UIView *)sender).tag中所示。 UIView的对象具有标记属性。如果您不将sender转换为UIView的实例,则只有id符合NSURLAuthenticationChallengeSender协议,并且它没有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
    }
}

答案 1 :(得分:3)

发件人是调用startClick方法的对象。您可以将该对象强制转换为UIImageView,然后查看该对象的tag属性以确定它是哪一个。

您需要在代码中的其他位置设置标记属性。如果在Interface Builder中有UIImageViews,则可以使用属性窗口输入标签号。否则,在分配和初始化UIImageViews时,请设置标记属性。