1

所以我已经好几年没看过 Swift/Cocoa 了。我刚刚使用 Xcode 10.0 创建了一个简单的 macOS 应用程序,发现它NSControl不再有addTarget(...)方法。看起来它已被targettype 的属性所取代id

由于我需要指定操作(例如单击)、要调用的对象以及要调用该对象的选择器,我现在应该如何为按钮单击等添加处理程序。


解决方案:

let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.target = self
statusItem.button?.action = #selector(didClick(_:))
4

2 回答 2

1

没错,基于方法的语法foo.addTarget(self)已经被基于属性的语法所取代foo.target = self。它仍然存在,UIKit因为在 Cocoa Touch 中您还必须指定控制事件。

并且所有相关NSControl的子类都有init方法来传递targetaction

于 2018-09-24T14:22:39.500 回答
-2

它仍然存在...您可能想复习这些文档。

https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

于 2018-09-24T14:20:52.577 回答