将多个按钮连接到一个动作?

时间:2010-04-07 02:09:36

标签: iphone objective-c sdk

我的应用中有多个UIButton。我也使用interfacebuilder。在我的.h我有这样的东西

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

然后我想做这样的事情

- (IBAction)buttonPressed {


if (theButtonIpressed == button1) 

{

// do something if 

}

}

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

谢谢,

-David

4 个答案:

答案 0 :(得分:4)

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

- (void) doSomething:(id)sender {

    int buttonPressed = [sender tag];

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

答案 1 :(得分:2)

- (IBAction)buttonPressed定义为:

- (IBAction)buttonPressed: (UIButton *) buttonIpressed

然后它会起作用。

答案 2 :(得分:1)

- (IBAction)buttonPressed:(UIButton*)button

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

答案 3 :(得分: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");
   }

}