NSPoupupButton的Swift子类,如何在子类中获取动作(IBAction)

时间:2017-12-29 17:13:03

标签: swift events ibaction first-responder

在Swift 4中,我已经将NsPopupButton子类化了。我可以在视图中使用该控件并执行常用的Ctrl-Drag创建一个IBAction,所有这些都可以。

我想要做的是处理子类本身的操作,以及允许视图响应。

我是Swift / MacOS / Xcode的新手,但是使用C#在Windows中编程,并了解目标/动作的概念和响应树树的遍历 - 但对我很温柔:)这样做的原因是拦截用户选择一个项目并保存以供日后恢复。

我在子类中尝试将self.target = self和self.action = #Selector转换为本地函数。这样可行,但是动作/事件停止遍历响应者树,它只是在子类中停止。

那么,我怎样才能让子类响应用户更改选择,然后让其他任何东西响应这个动作呢?

1 个答案:

答案 0 :(得分:0)

在macOS中有一种叫做Cocoa Bindings的模式。它可以作为目标/行动的非常方便的替代品。

从弹出按钮的菜单项控制拖动到目标视图控制器的第一响应者(读取多维数据集)(如果使用了xib,则为类)。如果IBAction被正确创建,它应该出现在列表中。动作方法在当前响应者链的第一个对象中执行,该对象已实现该方法。