Objective C比较UIButton if(sender == button)

时间:2015-09-24 16:38:32

标签: ios objective-c uibutton

嘿我想在UIControlEventTouchUpInside听众中找到按钮。我曾经用标签来做这件事,但我现在厌倦了这一点,因为我可以通过做arg0==button这样的事情来完成Android中的所有操作。

我将选择器设置为

[button addTarget:self action:@selector(actionUp:) forControlEvents:UIControlEventTouchUpInside];

然后在这个方法

- (IBAction)actionUp:(id)sender
{

    UIButton *b = (UIButton *)sender;

    if(b==button){
        NSLog(@"yeeeee");
    }
}

没有任何反应,两个对象bbutton几乎相同但引用内存中的另一个地址(比如2个字符串与==相比)。

b肯定能够按下我的按钮

[b setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];

正确地按下按钮。

那我该怎么办?

编辑:粘贴错误的方法,对不起(错误仍然存​​在,我只是快速重命名为帖子)

EDIT已解决:isEqual:为我工作。奇怪的是,重启后甚至==再次工作。我之前清理过这个项目,但是没有帮助,但是重启我的Mac确实没有。谢谢。

2 个答案:

答案 0 :(得分:1)

你可以使用

if ([sender isEqual:button]) {
    NSLog(@"yeeeee");
    UIButton *b = (UIButton *)sender;

    [b setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
}

答案 1 :(得分:0)

更好的

   if ([sender isKindOfClass:[UIButton class]])
...