gpt4 book ai didi

objective-c - 我可以在 Objective-C 上复制 "event handler"吗?

转载 作者:行者123 更新时间:2023-11-29 11:05:27 25 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我想知道我是否可以复制 Objective-C 上控件的“事件处理程序”。例如,我有一个按钮“FIRST”,每当用户单击它时,此按钮都会触发方法“clickEventHandler”。现在我有一个按钮“SECOND”,我只需要第二个按钮的功能与第一个按钮的功能相似,而不管第一个按钮的功能如何。

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

最佳答案

鉴于按钮的目标和操作通常是使用 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 的问题):

为了以编程方式从按钮获取操作(和目标),只需访问 NSButtonCellactiontarget 属性。

NSButton *button = (NSButton *)sender;    // Or perhaps from an IBOutlet
id target = button.cell.target;
SEL action = button.cell.action;

// Call the button's action selector
[target performSelector:action withObject:self]; // or withObject:sender

关于objective-c - 我可以在 Objective-C 上复制 "event handler"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com