我一直在寻找解决方案,但我似乎无法找到它。我在界面上有两个按钮。两者都调用相同的动作。有没有办法找出引发事件的按钮?我是iphone dev的新手,所以请给我一些指导,即使它看起来太微不足道了。
此致
khizar
答案 0 :(得分:6)
在每个事件中你都有(id)发送者参数,它是触发事件的对象。你可以将它与你的一个按钮进行比较,如下所示:
-(IBAction)clicked:(id)sender {
if ((UIButton *)sender == myButton1) {
// you have clicked button 1
}
}
您还可以设置按钮的tag
属性,并在点击功能中检查此参数:
myButton1.tag = 1;
myButton2.tag = 2;
-(IBAction)clicked:(id)sender {
if ([[sender] tag] == 1) {
// you have clicked button 1
}
}
答案 1 :(得分:3)
您的方法是-(void)buttonClicked:(id)sender
,其中sender是单击的按钮。将其投放到UIButton
&就行了!要识别它是哪个按钮,请在创建按钮时设置标签属性。检查此方法中的标记。
答案 2 :(得分:1)
您应该在.h文件中声明两个按钮,然后在您的方法中,您可以通过将发件人转换为UIButton来执行以下操作。因为我们使用指针,所以我们可以检查内存地址以了解发送按钮是什么。这不是我的头脑。可能甚至没有必要施放发件人...
.h文件
UIButton* button1;
UIButton* button2;
.m文件
-(void) someMethod:(id)sender
{
if((UIButton*)sender == button1)
{
//code for button1
}
else if((UIButton*)sender == button2)
{
//code for button2
}
}
答案 3 :(得分:0)
您可以为每个按钮指定唯一标记。我们假设您有两个按钮(Button1和Button2)。您可以通过执行以下操作在故事板或代码中分配标记。
button1.tag =1;
button2.tag =2;
现在,在您的操作方法中,您可以检查发件人是否是按钮,如果是,则按一个临时按钮并将其设置为发件人。当然,您必须将发件人转换为UIButton。现在,您可以检查,单击了哪个按钮。示例代码 -
-(IBAction)buttonClicked:(id)sender{
if([sender isKindOfClass:[UIButton class]]){
UIButton *tempButton = (UIButton*)sender;
if(tempButton.tag == 1){
NSLog(@"Button1 is clicked");
}
else if(tempButton.tag == 2){
NSLog(@"Button2 is clicked");
}
}
}