所以我已经好几年没有看过 Swift/Cocoa 了。我刚刚使用 Xcode 10.0 创建了一个简单的 macOS 应用程序,发现NSControl
不再有addTarget(...)
方法。看起来它被id
类型的target
属性所取代。
我现在如何为按钮单击之类的内容添加处理程序,因为我需要指定操作(例如单击(、要调用的对象以及要调用该对象的选择器。
溶液:
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.target = self
statusItem.button?.action = #selector(didClick(_:))
是的,基于方法的语法foo.addTarget(self)
已替换为基于属性的语法foo.target = self
。它仍然存在于UIKit
中,因为在Cocoa Touch中,您还必须指定控制事件。
所有相关的NSControl
子类都有init
传递target
和action
的方法
它仍然在那里... 您可能需要查看文档作为复习。
https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget