我可以在目标C上复制“事件处理程序”吗?

时间:2012-12-12 10:40:59

标签: objective-c ios

这可能是一个愚蠢的问题,但我想知道我是否可以在目标C上复制控件的“事件处理程序”。例如,我有一个“FIRST”按钮,每当用户点击它时,此按钮将触发方法“clickEventHandler”。现在我有一个按钮“SECOND”,我只需要第二个按钮就像第一个按钮那样做,无论第一个按钮是什么。

请给我一个解决方案。欢迎任何推荐。

1 个答案:

答案 0 :(得分:2)

鉴于按钮的目标和操作通常是使用Interface Builder设置的,我认为最好的解决方案可能是拥有一个“路由”事件的通用方法。所以有两个按钮调用:

- (IBAction)eventRouter:(id)sender
{
    // Don't forget to set the button's tag in IB!
    NSInteger tag = [sender tag];

    switch (tag)
    {
    case BUTTON1_TAG:
        [self button1Method:sender];
        break;
    case BUTTON2_TAG:
        [self button2Method:sender];
        break;
    default
        break;
    }
}

然后,您可以在运行时更改路由,而无需编辑IB中的按钮。

编辑(在OP提出问题后):

要以编程方式从按钮获取操作(和目标),只需访问action的{​​{1}}和target属性。

NSButtonCell