0

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

4

4 回答 4

1

为此,如果您使用 Outlet,则需要为每个按钮使用 set IBOutlet 或为每个按钮设置标签,然后使用此代码 .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
}
于 2013-01-27T16:03:49.257 回答
1

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

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

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

 // etc.
于 2013-01-26T20:14:43.337 回答
0

使用IBOutletCollections.

这是教程: http: //useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html

于 2013-01-26T20:23:07.347 回答
0

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

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

将 .xib 中的对象连接到现有的 IBAction

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

  • 首先在 IB 中只将一个按钮拖到画布上。按住 Control 从按钮拖动到视图的 .m 文件。

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

  • 现在不再从对象库中拖出更多按钮,而是按住 Option 键并从原来的按钮中拖出一个新按钮。这个新按钮将连接到与原始按钮相同的 IBAction。(如果您需要创建大量按钮并且这看起来很乏味,您可以同时选择一堆已经创建的按钮,然后按住 Option 键一次创建更多按钮。)

于 2013-05-01T16:35:47.610 回答