2010-04-07 70 views
3

我在我的应用程序中有多个UIButtons。我也使用interfacebuilder。在我.hi有这样的事情将多个按钮连接到一个动作?

IBOutlet UIButton *button1; 
    IBOutlet UIButton *button2; 
    IBOutlet UIButton *button3; 
    - (IBAction)buttonPressed; 

然后在我的MI想要做这样的事情

- (IBAction)buttonPressed { 


if (theButtonIpressed == button1) 

{ 

// do something if 

} 

} 

的问题是我没有所谓的“theButtonIpressed”所以​​我不能这样做。我的if语句应该是什么样子?我不想为每个按钮做一个 - (IBAction)。有什么我可以确定哪个按钮被按下?谢谢!

感谢,

-David

+0

@大卫 - 为什么不能有其他'IBAction's?您的代码将通过多种方法更容易维护。 – 2010-04-07 02:20:02

+0

如果他们都做非常类似的事情,则不是。这导致了很多重复的代码,对吧? – willc2 2010-04-14 11:47:21

+0

按照这个答案.http://stackoverflow.com/questions/16050516/how-to-connect-multiple-buttons-in-a-storyboard-to-a-single-action/24842728#24842728 – 2014-07-26 07:21:44

回答

4

您还可以在界面构建器中为每个按钮设置标签属性,然后使用它来查找哪个按钮被按下....这也意味着您不需要定义所有按钮引用(UIButton ),并跟踪它们的代码....

- (void) doSomething:(id)sender { 

    int buttonPressed = [sender tag]; 

    switch (buttonPressed) { 
     case 0:.... 
     // etc 
    } 
} 
2

定义您- (IBAction)buttonPressed到:

- (IBAction)buttonPressed: (UIButton *) buttonIpressed 

然后它会奏效。

+0

也感谢您的帮助。 – bobbypage 2010-04-07 02:27:20

1

- (IBAction)buttonPressed:(UIButton*)button

但是,如果你正在做的事情为每个按钮,然后做了正确的方式不同的是创建单独的IBActions。

+0

感谢您的帮助。 – bobbypage 2010-04-07 02:30:53

0

可以使用标记值每个按钮

IBOutlet UIButton *button1; 
button1.tag = 100; 
IBOutlet UIButton *button2; 
button2.tag = 200; 
IBOutlet UIButton *button3; 
button3.tag = 300; 

- (IBAction)buttonPressed:(id)sender 
{ 
    if ([sender tag]==100) 
    { 
    NSLOG("button1"); 
    } 
    else if([sender tag]==200) 
    { 
    NSLOG("button2"); 
    } 
    else { 
    NSLOG("button3"); 
    } 

} 
相关问题