如何在Xcode 4.2中一次链接多个对象?

时间:2012-04-06 22:45:12

标签: ios xcode interface-builder xcode4.2

我可能错过了这里的基础知识...有没有办法在Xcode 4.2中使用Interface Builder一次将多个对象链接到一个方法?

我在UIView中设置了大量的UIButton。所有这些方法只调用一种方法(比如说- (IBAction)buttonPushed:(UIButton *)aButton),根据发送方的不同,它应该做一些不同的事情。我无法找到一种方法将它们全部与我的方法一起链接。任何建议都将非常感谢...

N.B。我在Snow Leopard上使用Xcode 4.2,没有故事板。

3 个答案:

答案 0 :(得分:0)

这应该可行。即,你

  1. 确定您的IBAction
  2. 您可以将“内部修饰”(或其他所需操作)附加到每个按钮的方法
  3. 您在每个按钮上设置标记值
  4. 在您的IBAction中,您从发件人处获取标签并采取相应行动

    - (IBAction)buttonPressed:(id)sender;
    {
        NSInteger tag = [sender tag];
        // switch statement or some other check against tag value
    }
    

答案 1 :(得分:0)

for循环可能是一个好主意。保留按钮的NSArray并执行以下操作:

for (int i = 0; i < [myArray count];  i++) {
    [(UIButton*)[myArray objectAtIndex:i] addTarget:self action:@selector(buttonPushed:) forControlEvents:UIControlEventTouchUpInside];
    [(UIButton*)[myArray objectAtIndex:i]setTag:i];
}

(来自我的iPhone,这是我能做的最好的。它有点粗糙,可能无法编译,但你得到了要点)。

答案 2 :(得分:0)

似乎不可能使用IB在Xcode 4.2中一次链接多个对象。

我最终在我的代码中使用了for循环,正如Phillip Mills首先提出的那样(他的评论为+1)。

这是我的代码:

for (UIButton *aButton in [self.view subviews]) {
    [aButton addTarget:self
                action:@selector(buttonPushed:)
      forControlEvents:UIControlEventTouchUpInside];
}

感谢大家的帮助!!!