21

我目前正在使用 Xcode 4.6,我只是想知道如何在不同的 UIViews 中选择多个按钮,但在单个视图控制器下。CMD 点击似乎不起作用。我需要这个功能,因为在 Xcode 4.6 中,让 IB 上的两个按钮共享相同操作的唯一方法是一次选择它们,然后将操作拖到您的视图控制器。

我的最终目标是使用 Xcode 4.6 中的情节提要在两个不同的 UIView 上获得两个不同的按钮以匹配相同的操作。有没有办法做到这一点?

编辑:我目前正在使用 Xcode 4.6.1 没有任何运气,升级到 4.6.2。

4

7 回答 7

79

您可以将多个按钮连接到单个操作,而无需一次全部选择。

但是,在创建动作之后,您需要保存包含动作的源文件,然后 Xcode 才能让您将另一个控件连接到动作。

我用 Xcode 4.6.2 做到了这一点:

将按钮连接到操作

于 2013-04-17T03:42:06.003 回答
9

斯威夫特 3.0 Xcode 8.0+

将所有按钮连接到下面的方法签名。确保参数 sender 的类型为UIButton(或 UIButton 的子类),以便连接情节提要中的其余按钮。

@IBAction func dialconfigTapped(_ sender: UIButton) {}

使用sender.tag来识别被点击的按钮。

于 2016-12-30T04:53:08.623 回答
8

按照这个步骤

1.在视图控制器中创建IBAction

在 .h 文件中

-(IBAction)action:(id)sender;

在 .m 文件中

-(IBAction)action:(id)sender{


}

2. 将所有按钮连接到此操作

在此处输入图像描述

3. 按照下一张图片给每个按钮一个标签 在此处输入图像描述

4. 现在在你的动作函数里面放这些

    -(IBAction)action:(id)sender{

        UIButton *button=(UIButton*)sender;

        if(button.tag==1){

            //your stuff!
        }
        if(button.tag==2){

            //your stuff!
        }
        if(button.tag==3){

            //your stuff!
        }

    }

奔跑吧。

于 2014-07-19T16:51:31.600 回答
1

您应该能够在 IB 中执行此操作。IBAction在 IB 中,只需在相关类中将它们指向相同即可。

IBAction当动作发生时,如果您想知道从哪个按钮获得了动作,您可以通过从按钮读取文本或使用tag您应该从 IB 设置的属性来区分方法中的按钮。

- (IBAction)buttonClicked:(id)sender {
    NSLog(@"Button pressed: %@", [sender currentTitle]);
    NSLog(@"Button pressed: %@", [sender tag]);
}
于 2013-04-17T02:55:14.280 回答
0

您可以使用IBOutletCollection 以下链接将帮助您使用它

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

于 2013-04-17T04:28:12.053 回答
0

在 Xcode 5 中,为第一个按钮设置操作后,我必须构建应用程序。然后,这允许我将其他按钮操作连接到相同的 IBAction 方法

于 2014-04-07T07:58:32.047 回答
-2

在 xcode 4.6.3 中,您不再需要在分配操作之前保存。

于 2013-08-21T05:14:08.860 回答