我想使用cocoa向另一个对象发送一个动作.理想情况下,我还希望它出现在"界面"构建器中.
我已经尝试了苹果文档,但有些东西我不见了.添加以下内容,界面构建仅将操作显示为已接收的操作.
- (IBAction)setTarget:(id)anObject; - (IBAction)setAction:(SEL)aSelector;
有人可以给我一个如何创建已发送动作的示例.谢谢
我有我的controller1中定义的接收操作.然后我希望我的controller2能够向controller1发送一个动作(就像NSButton那样).在界面构建中,您可以将一行FROM NSButton拖到应该接收信号的控件上.此功能不仅限于那里的苹果对象,必须是一种方法.
IBAction
是一个预处理器指令,告诉Interface Builder"这是你应该知道的事情." 它实际上评估为void
.这意味着"动作"只是您可以正常方式调用的常规方法:
[target someMethod:self];
如果要模仿可以从中获取的行为NSButton
,可以为目标添加插座,为选择器添加属性(作为字符串):
@property (nonatomic, retain) IBOutlet id target; @property (nonatomic, retain) NSString* actionSelectorString;
你可以这样打电话:
SEL action = NSSelectorFromString(self.actionSelectorString); [self.target performSelector:action withObject:self];
如果您希望您的类通过在Interface Builder中拖放来连接选择器,最简单的方法是使您的类成为子类NSControl
(从对象库拖动自定义视图,Command-6显示检查器,选择你的班级在顶部弹出窗口).然后,您可以通过以下方式"呼叫"该操作:
- (void) go { [self sendAction:self.action to:self.target]; }