作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 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,但它是相同的想法):
问题是:当用户在 Xcode 的 nib 编辑器中选择我的类的实例时,我希望这些已发送事件出现在连接检查器中,以便用户可以连接其中一个并使用目标-行动架构。
仅当您的类是 Control 子类时才可以执行此操作。因此,例如,在 iOS 中,自定义 UIControl 子类会在 Interface Builder 中显示这些发送的事件。
如果您做不到这一点,那么程序员将无法在 Interface Builder 中配置您的目标操作。您当然可以实现目标-操作架构,但程序员必须在代码中设置目标和操作。 (当然,你可以通过将目标作为一个导出来完成一半的工作。)
关于swift - 如何从自定义类中提供 "sent action"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52392346/
我是一名优秀的程序员,十分优秀!