我有一个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];
}
答案 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时,请设置标记属性。