我有一个显示10个(或更多)UIButton的方法。我这里有一个关于我如何显示这些按钮的代码..
-(void)showButtons{
for(int i = 0; i < 10; i++){
UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
button.frame = CGRectMake(x, y, 100, 94); //Assume x and y have values
**button.tag = i + 1000;**
[button setBackgroundImage:[_cardImages objectAtIndex:i]
forState:UIControlStateNormal];
[button addTarget:self action:@selector(myMethod:)
forControlEvents:UIControlEventTouchUpInside];
[self.view add subview:button];
[button release];
} }
-(IBAction)myMethod:(id)sender{
// I would like to print here button.tag, but I always get an error
}
答案 0 :(得分:3)
您需要在此处对发件人进行类型转换,因为 id 类型没有标记属性。
新代码将是
-(IBAction)myMethod:(id)sender{
UIButton *pressedButton = (UIButton *)sender;
NSLog(@"Tag of button pressed:%d",pressedButton.tag);
}
答案 1 :(得分:0)
您将通过打印sender.tag而不是button.tag
的值来获得结果-(IBAction)myMethod:(id)sender{
NSLog(@"%d",sender.tag);
}
答案 2 :(得分:0)
尝试访问UIButton的UIView,然后访问它的TAG属性。所以修改Amresh Kumar的代码:
-(IBAction)myMethod {
UIButton *pressedButton = (UIButton *)sender;
NSLog(@"Tag of button pressed:%d",pressedButton.view.tag);
}
答案 3 :(得分:0)
你的myMethod的定义应该是这样的
我使用相同的方式来获取发件人的标签。
-(IBAction)myMethod:(id)sender
{
NSLog(@"%d",[sender tag]);
}
不需要类型转换,你可能会获得发送者的标记,它的数据类型无关紧要。