0

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

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

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

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

我会以错误的方式解决这个问题吗?在规则编辑器中选择标准时,是否有更简单的方法来运行特定于标准的代码?

谢谢!

4

1 回答 1

1

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

于 2016-12-19T02:49:10.367 回答