Выполнение действия при выборе критерия NSRuleEditor
Как я могу определить, какой критерий выбирается в NSPopUpButton
меню NSRuleEditor
? внутри ruleEditorRowsDidChange(_:)
Я мог бы отслеживать критерии для каждой строки и обрабатывать изменения вручную, но, похоже, должен быть более простой способ.
Я пытался вернуть NSMenuItem
вместо String
для критерия value
в делегате редактора правил; затем установите свойства цели и действия в пункте меню. Это позволяет мне вызывать метод при выборе пункта меню (критерия) в редакторе правил. Это также означает, что я знаю, какой критерий вызвал метод действия, потому что целью каждого пункта меню является сам критерий. Однако установка свойств цели и действия в пункте меню переопределяет частные значения цели и действия, которые редактор правил устанавливает в пункте меню. Это означает, что после выбора критерия в редакторе правил цель / действие, которое я установил, срабатывает, но изменение выбора не отражается в редакторе правил.
Мое текущее решение - вернуть NSPopUpButton
в качестве критерия displayValue
(так как он наследует от NSView
) и управляйте элементами кнопки и целью / действием вручную. Это работает хорошо, но кажется, что это немного нарушает дизайн редактора правил, поскольку один критерий сам управляет несколькими значениями вместо того, чтобы полагаться на делегата редактора правил).
Я поступаю об этом неправильно? Существует ли более простой способ запуска кода, специфичного для критерия, когда критерий выбран в редакторе правил?
Спасибо!
1 ответ
Установите действие пункта меню и внутри вызова действия - (void)setCriteria:(NSArray *)criteria andDisplayValues:(NSArray *)values forRowAtIndex:(NSInteger)rowIndex
редактора правил, чтобы обновить строку. Вы можете получить ряд с - (NSInteger)rowForDisplayValue:(id)displayValue
,