Macos 使用Swift在Xcode 6中处理NSButton事件

Macos 使用Swift在Xcode 6中处理NSButton事件,macos,event-handling,swift,nsbutton,Macos,Event Handling,Swift,Nsbutton,我想为swift中的NSButton设置操作和目标。在以前版本的Xcode中,有setAction和setTarget方法,但这些方法不再包含在Cocoa库中(或者我所能说的没有)。Swift与新库的等价物是什么: NSButton *myButton = [NSButton alloc]; [myButton setTarget:self]; [myButton setAction:@selector(myMethodToCallOnClick:)]; 这与objC中

我想为swift中的NSButton设置操作和目标。在以前版本的Xcode中,有setAction和setTarget方法,但这些方法不再包含在Cocoa库中(或者我所能说的没有)。Swift与新库的等价物是什么:

    NSButton *myButton = [NSButton alloc];
    [myButton setTarget:self];
    [myButton setAction:@selector(myMethodToCallOnClick:)];

这与objC中的情况几乎相同,只是选择器的位置略有不同。如今,在定义选择器时,swift 2.2和LESER之间存在差异

下面的命令指定了“self”上的回调,该回调被假定为@objc accessible的NSObject(myAction函数可能必须标记为@objc,因为选择器现在仍然使用objc运行时)

(对于有趣的颜色,很抱歉,stackoverflow没有得到#选择器的东西…认为这是一个评论。)

如果您使用的是swift 2.2或更高版本,则无需使用#If#else#endif,我只想演示一下两者的区别

    let button = NSButton()
    button.target = self
#if swift (>=2.2)
    button.action = #selector(myAction) // now it autocompletes!
#else
    button.action = "myAction:" //old way to do it in swift
#endif