swift - 如何从自定义类中提供 "sent action"?

标签 swift

我正在 Swift 中基于 NSObject 开发自定义类。它是一个状态菜单图标/菜单助手。当我收到在自定义类中单击图标的事件时,我想以 NSButton 允许创建 IBAction 来响应用户单击按钮的相同方式传递该事件。

我该怎么做?

代码:

我正在我的类中注册一个选择器来监听点击:

statusItem.action = #selector(statusBarIconClicked)

接收此信息的选择器:

@objc func statusBarIconClicked(sender: AnyObject) {
    print("clicked clicked!!")
    // pass sent action on through a new sent action... how?     
}

我希望它可以链接到用户,就像按钮可以导致这样:

@IBAction func myClassSaysMenuWasClicked(_ sender: Any) {
// Reacting to that
}

谷歌搜索了一段时间,没有发现什么。

最佳答案

我认为您正在询问连接检查器中显示的这类事情(这是 iOS,不是 macOS,但它是相同的想法):

enter image description here

问题是:当用户在 Xcode 的 nib 编辑器中选择我的类的实例时,我希望这些已发送事件出现在连接检查器中,以便用户可以连接其中一个并使用目标-行动架构。

仅当您的类是 Control 子类时才可以执行此操作。因此,例如,在 iOS 中,自定义 UIControl 子类会在 Interface Builder 中显示这些发送的事件。

如果您做不到这一点,那么程序员将无法在 Interface Builder 中配置您的目标操作。您当然可以实现目标-操作架构,但程序员必须在代码中设置目标和操作。 (当然,你可以通过将目标作为一个导出来完成一半的工作。)

关于swift - 如何从自定义类中提供 "sent action"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52392346/

相关文章:

ios - NavigationView 和 NavigationLink 在转换后不删除 View

parsing - 由于使用撇号,无法解析 Realm 数据库。 - 环球银行金融电信协会

swift - 如何使用 Alamofire 处理两个不同的 JSON 响应

ios - 如何在主线程上调用更新

swift - 同名(和签名)闭包和函数 : non-ambiguous for >0 arguments, 在调用时给予闭包优先权

ios - Swift with Nested Json - 访问不是字符串的键

ios - 查看不向上移动自定义键盘高度 - swift

ios - ImageView 双边框

ios - Swift 3 函数命名约定

ios - 如何将数组的所有图像转换为数据