当前位置:  开发笔记 > 编程语言 > 正文

发送行动可可 - IBAction

如何解决《发送行动可可-IBAction》经验,为你挑选了1个好方法。

我想使用cocoa向另一个对象发送一个动作.理想情况下,我还希望它出现在"界面"构建器中.

我已经尝试了苹果文档,但有些东西我不见了.添加以下内容,界面构建仅将操作显示为已接收的操作.

- (IBAction)setTarget:(id)anObject;
- (IBAction)setAction:(SEL)aSelector;

有人可以给我一个如何创建已发送动作的示例.谢谢


我有我的controller1中定义的接收操作.然后我希望我的controller2能够向controller1发送一个动作(就像NSButton那样).在界面构建中,您可以将一行FROM NSButton拖到应该接收信号的控件上.此功能不仅限于那里的苹果对象,必须是一种方法.



1> TALlama..:

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];
}


像一个从未使用任何其他拖放界面构造工具的人,他们往往会隐藏更多的东西并产生大量你不应该触摸的代码.IB与ObjC的动态运行时一起工作,做有用但不神奇的事情; 它的作用的一半如上所述(另一半是设置属性),并且没有花很长时间,是吗?
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有