如何确定在NSRuleEditor
的NSPopUpButton
菜单中选择了哪个标准?内部ruleEditorRowsDidChange(_:)
我可以跟踪每行的条件并手动处理更改,但似乎应该有一种更简单的方法。
我尝试在规则编辑器的委托中为条件value
返回NSMenuItem
而不是String
;然后在菜单项上设置目标和操作属性。这允许我在规则编辑器中选择菜单项(条件)时调用一个方法。这也意味着我知道哪个条件触发了操作方法,因为每个菜单项的目标都是标准本身。但是,在菜单项上设置目标和操作属性将覆盖规则编辑器在菜单项上设置的专用目标和操作值。这意味着在规则编辑器中选择条件后,我设置的目标/操作会触发,但选择更改不会反映在规则编辑器中。
我当前的解决方案是返回一个NSPopUpButton
作为条件的displayValue
(因为它继承自NSView
),并手动管理按钮的项目和目标/操作。这很好用,但感觉它通过让单个条件本身管理多个值而不是依赖规则编辑器的委托来破坏规则编辑器的设计。
我这样做的方式是错误的吗?在规则编辑器中选择条件时,是否有更简单的方法可以运行特定于条件的代码?
谢谢!
设置菜单项的操作,并在规则编辑器的操作调用- (void)setCriteria:(NSArray *)criteria andDisplayValues:(NSArray *)values forRowAtIndex:(NSInteger)rowIndex
内刷新行。您可以获取带有- (NSInteger)rowForDisplayValue:(id)displayValue
的行。