如何设置和获取UIButtons的标签?

时间:2010-03-17 02:32:26

标签: iphone tags

如何以编程方式为按钮设置标记?

我后来想要与结论的标签进行比较

我试过这个

-(IBAction)buttonPressed:(id)sender{
NSLog(@"%d", [sender tag]);
}

但这只是崩溃应用.... :(

还有其他想法吗?

干杯伙伴

萨姆

3 个答案:

答案 0 :(得分:13)

您需要将发件人转换为UIButton:

-(IBAction)buttonPressed:(id)sender{
UIButton *button = (UIButton *)sender;
NSLog(@"%d", [button tag]);
}

编辑:关于消息“无法识别的选择器”......

根据您的错误消息,它无法首先调用buttonPressed方法。请注意,在错误消息中,它正在查找“buttonPressed”(结尾没有冒号),但该方法名为“buttonPressed:”。如果您在代码中设置按钮目标,请确保选择器设置为buttonPressed:而不仅仅是buttonPressed。如果您在IB中设置目标,则xib可能与代码不同步。

此外,您的原始代码“[sender tag]”也应该有效,但要访问特定于按钮的属性,您仍需要将其强制转换为UIButton。

答案 1 :(得分:5)

我知道这是一个老问题,并且在其他问题上已经多次回答,但它在谷歌搜索中排在第二位。所以,这里是为什么崩溃的答案。将其更改为“button.tag”

-(void)myMethod
{
   UIButton *theButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [theButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];

    theButton.tag = i;//or whatever value you want.  In my case it was in a forloop

}

-(void)buttonPressed:(id)sender
{
    UIButton *button = (UIButton *)sender;
    NSLog(@"%d", button.tag);
}

答案 2 :(得分:-1)

无需施法。这应该有效:

-(IBAction)buttonPressed:(UIButton*)sender
{
NSLog(@"%d", [sender tag]);
}