如何让多个UIButton连接到同一个IBAction?

时间:2013-01-26 20:12:20

标签: iphone xcode uibutton

我需要几个UIButtons才能连接到同一个IBAction,所以按钮都可以做同样的事情,而无需复制和粘贴代码。请告诉我是否有办法做到这一点!它可能在我的鼻子底下,但我找不到它。谢谢!

4 个答案:

答案 0 :(得分:1)

只需为每个按钮添加相同的目标和选择器:

[button1 addTarget:self
            action:@selector(buttonClicked:)
  forControlEvents:UIControlEventTouchUpInside];

[button2 addTarget:self
            action:@selector(buttonClicked:)
  forControlEvents:UIControlEventTouchUpInside];

 // etc.

答案 1 :(得分:1)

为此您需要为每个按钮使用设置IBOutlet或为每个按钮设置标签如果您使用的是Outlet,则使用此代码.h

@interface RootViewController_Phone : UIViewController 
{
IBOutlet UIButton *btn1;
IBOutlet UIButton *btn2;
}
- (IBAction)buttonPressed:(id)sender;
-(void)CallButtonsMethod;
@end

现在在.m文件

- (IBAction)buttonPressed:(id)sender{
if([sender isEqual:btn1])
{
    [self CallButtonsMethod];
}
if([sender isEqual:btn2])
{
   [self CallButtonsMethod];
}
}

-(void)CallButtonsMethod
{
 //your Code
}

答案 2 :(得分:0)

答案 3 :(得分:0)

我发现我通常无法将IB中的多个按钮(甚至是单个按钮)连接到代码中已经存在的 IBAction,通过Ctrl-从按钮拖动到m文件中的IBAction。 Xcode尝试在拖动文件中创建新操作,但不会连接到现有操作。 [对于Xcode 4.6.1和之前的几个(可能是所有)版本都是如此。]

如果IBAction位于视图控制器中,以下链接中接受的答案中的方法有效,该视图控制器是包含按钮的视图的“文件所有者”:

Connect object in .xib to existing IBAction

但是,如果您希望IBAction位于视图自己的类中,而不是视图控制器的类中,则以下方法有效:

  • 首先将一个按钮拖到IB的画布上。控制 - 拖动 视图的.m文件按钮。

  • 将拖动的行拖放到代码实现部分的任何空白区域中。 在小弹出对话框中定义新的IBAction。所以现在你有一个 按钮连接到IBAction。

  • 现在,不是从对象库拖动更多按钮,而是 hold 按下Option键并从原始按钮中拖出一个新按钮。 这个新按钮将连接到与之相同的IBActions 原来的。 (如果你需要创建很多很多的按钮和 这看起来很乏味,你可以同时选择一堆已经创建过的 选项 - 拖动以在单个go中创建更多。)