2010-03-23 61 views
-1

我想看看被点击,所以我可以瓶坯正确的逻辑的按钮。帮助与iPhone按钮按下

这是按钮的代码:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(270, 423, 60, 60)]; 
[button addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[button setBackgroundImage:[[UIImage imageNamed:@"refreshicon.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal]; 
button.tag = 1; 

UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 423, 60, 60)]; 
[button2 addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[button2 setBackgroundImage:[[UIImage imageNamed:@"login.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal]; 
button2.tag = 2; 

[self.navigationController.view addSubview:button]; 
[self.navigationController.view addSubview:button2]; 

这是我如何调用buttonPressedAction

- (void)buttonPressedAction:(id)sender 
{ 
UIButton* button = (UIButton*)sender; 

if(button.tag == 1) 
{ 
    NSLog(@"1"); 
}else 
{ 
    NSLog(@"2"); 
} 
} 

但是当我使用NSLog看到发件人值是什么,它崩溃。

对正在发生的事情以及如何纠正它有什么建议?

现在更正:O)谢谢!

+1

什么是崩溃?无法识别的选择器,还是别的? – 2010-03-23 21:36:10

+0

从什么时候UIButton有一个'value'方法? – Chuck 2010-03-23 21:42:54

+0

我也怀疑一个无法识别的选择器。你期待[发送者值]返回什么?据我所知,UIButton没有像这样的属性。 – 2010-03-23 21:44:36

回答

2

正如其他人指出,UIButton的不具有价值属性。我想你正试图检测哪个按钮被点击。这里有两种方法可以做到这一点:

  1. 使用tag属性每个按钮一个。即button1.tag = 1,button2.tag = 2.然后,您可以测试用if(sender.tag == 1)等点击了哪个按钮。您可以引入数字的常量,以使代码更具可读性。

  2. 如果你到按钮的引用,您可以检查是否参考相等。例如:if(sender == self.button1)

+0

真棒,谢谢! – StealthRT 2010-03-23 22:20:20

+0

这是我写的重复... – 2010-03-23 23:18:08

+0

@Shaggy Frog:猜猜我们在同一时间写它,有时会发生 – 2010-03-23 23:51:54

0

也许最好的办法是给那个做不同的事情不同的操作按钮,但做不到这一点,你可以通过标签区分它们。

0
- (void)buttonPressedAction:(id)sender 
{ 
    UIButton* button = (UIButton*)sender; 
    // do something 
} 

如果你保存的指针,你所创建的按钮对象,你可以比较的指针。或者你可以设置按钮的tag属性,并使用它来切换行为。

+0

太棒了,谢谢!我将这个代码从Mads Mobaek添加到了这个,它工作得很好:o) – StealthRT 2010-03-23 22:20:46