选择 NSRuleEditor 条件时执行操作

Performing action when NSRuleEditor criterion is selected

如何确定在 NSRuleEditorNSPopUpButton 菜单中选择了哪个标准?里面 ruleEditorRowsDidChange(_:)

我可以跟踪每一行的条件并手动处理更改,但似乎应该有更简单的方法。

我尝试 return 在规则编辑器的委托中为标准的 value 使用 NSMenuItem 而不是 String;然后在菜单项上设置目标和操作属性。这允许我在规则编辑器中选择菜单项(标准)时调用一个方法。这也意味着我知道哪个标准触发了操作方法,因为每个菜单项的目标就是标准本身。但是,在菜单项上设置目标和操作属性会覆盖规则编辑器在菜单项上设置的私有目标和操作值。这意味着在规则编辑器中选择一个条件后,我设置的 target/action 会触发,但选择更改不会反映在规则编辑器中。

我目前的解决方案是 return 一个 NSPopUpButton 作为标准的 displayValue(因为它继承自 NSView)并管理按钮的项目和 target/action 手动。这很好用,但感觉它有点打破了规则编辑器的设计,因为它有一个单一的标准来管理多个值本身,而不是依赖于规则编辑器的委托。

我是不是走错了路?在规则编辑器中选择条件时,是否有更简单的方法来 运行 特定于条件的代码?

谢谢!

设置菜单项的动作,并在规则编辑器的动作调用- (void)setCriteria:(NSArray *)criteria andDisplayValues:(NSArray *)values forRowAtIndex:(NSInteger)rowIndex内刷新行。您可以使用 - (NSInteger)rowForDisplayValue:(id)displayValue.

获取行