ios多个UIButtons使用一个处理程序(通过IB)

时间:2011-12-07 04:41:14

标签: ios interface-builder

有没有办法让视图上的所有UIButton使用相同的Touch Up Inside处理程序?或者使用Interface Builder

将所有按钮设置为同一个代理

4 个答案:

答案 0 :(得分:4)

是。控制按照通常的方式将第一个按钮拖动到头文件中并创建操作。然后在.xib文件中,将每个其他按钮连接到文件的所有者,并选择刚刚创建的相同操作。

在.xib文件中,查看“视图”窗格上的“属性”检查器。您可以单独为每个按钮设置标记。然后你可以使用以下代码......

- (IBAction)myButtons:(id)sender {

    switch ([(UIButton *)sender tag]) {
        case 0:
            // code for first button
            break;

        case 1:
            // code for second button
            break;

        case 2:
            // code for third button
            break;

        default:
            break;
    }
}

答案 1 :(得分:2)

是的,您可以将相同的IBAction附加到任意数量的按钮事件中。启动操作的实际按钮将作为参数传递给IBAction,您可以在那里进行区分(如果需要)。

答案 2 :(得分:2)

从多个按钮进行与目标/动作相同的IBAction没有问题。只需在IB中绑定多个

程序化的等价物是:

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

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

答案 3 :(得分:1)

当然,为什么不呢?只需控制 - 从每个按钮拖动到代码中的相同IBAction方法。但是,该方法必须由一个巨大的if语句组成,以确定它是什么按钮以及响应时应该做什么,因为你肯定不希望所有这些按钮做同样的事情。