Swift 快速目标行动

Swift 快速目标行动,swift,macos,interface-builder,Swift,Macos,Interface Builder,我来自C#背景,我正试图进入Swift和OSX开发。当我在.NET中实现自定义控件时,我可以创建事件来通知事件处理程序控件中发生的事情 例如:如果我创建了一个允许用户在其上放置文件的控件,我可以在用户放置文件时触发事件,并且事件处理程序可以直接处理放置的文件 现在,我想实现一个NSControl派生视图NSControl已经实现了目标操作模式,并提供了action操作,我可以在Interface Builder中将其连接到某个方法来处理该操作。右键单击控件时,操作操作也可用: 现在,我想做的是

我来自C#背景,我正试图进入Swift和OSX开发。当我在.NET中实现自定义控件时,我可以创建事件来通知事件处理程序控件中发生的事情

例如:如果我创建了一个允许用户在其上放置文件的控件,我可以在用户放置文件时触发事件,并且事件处理程序可以直接处理放置的文件

现在,我想实现一个
NSControl
派生视图
NSControl
已经实现了目标操作模式,并提供了
action
操作,我可以在Interface Builder中将其连接到某个方法来处理该操作。右键单击控件时,
操作
操作也可用:

现在,我想做的是定义另一个操作(可能是以后的另一个),它可以使用IB以相同的方式连接。我查找了
NSControl
的定义,它显示了以下两行:

weak public var target: AnyObject? 
public var action: Selector
但是,向我的子类添加类似的代码不会影响IB中的任何内容(为类设置了
@ibdesiable
属性)

然后,我定义了一个可以由某个代表实现的协议:

public protocol SomeDelegate {
    func someDelegateMethod(path: String)
}

@IBDesignable
public final class GreatControl: NSControl {
    public var delegate: SomeDelegate?
我可以用如下代码设置委托:

@IBOutlet weak var myGreatControl: GreatControl!

override func viewDidLoad() {
    super.viewDidLoad()
    self.myGreatControl!.delegate = self
}
但是我真的希望使用IB而不是代码来设置委托

问题是:我更喜欢目标操作模式,因为它非常接近.NET或其他事件驱动环境的功能。如何实现这一点,以便使用IB连接操作?如果这是不可能的,我是否可以通过某种方式使委托至少可以通过IB而不是仅通过代码设置



PS:当我在谷歌上搜索这个时,几乎没有关于OSX的任何信息。这里似乎只有IOS开发者。我希望答案不要详细说明如何为IOS做事情(除非它们对OSX也一样),因为我没有开发IOS应用程序。

@IBInspectable
装饰器,但它只适用于ints、颜色等属性。不确定IB是否支持自定义对象/操作的操作映射。@Cristik我实际上已经尝试过了,但它没有做任何事情。在重新表述了这个问题之后,我在这里找到了答案,所以我在谈论对IOS视图做同样的事情(实际上我现在无法链接它,我正在工作,手头没有链接)。答案是,您可以实现其他目标和操作,但必须用代码将它们连接起来。那真是太遗憾了。。。