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