2013-11-07 1 views
0

В моем приложении OSX какао, у меня есть объект данных, который имеет два свойства BOOL, называют их «OptionA» и «OptionB»Связывание индекс NSPopupButton с несколькими логическими значениями

мне нужно представить пользователю интерфейс к задайте значения этих двух булевых, но по разным причинам (в основном, ясность и эстетика) я хочу использовать NSPopupButton с тремя параметрами - например, «оба набора», «Только А», «Только B» («ни один» не является опцией).

Я знаю, что могу использовать цель/действие с помощью NSPopupButton, чтобы проверить индекс и установить значения в коде, а также использовать KVO, чтобы поймать изменения в моем объекте данных и вернуть индекс NSPopupButton.

Я думаю, это не имеет большого значения, но поскольку я пытаюсь обернуть голову вокруг привязок Cocoa и использую ее с другими элементами пользовательского интерфейса, мне было интересно, есть ли более элегантный подход с использованием привязок Cocoa без написания этого кода клея ?

ответ

1

Неправильно использовать привязки в вашем случае, и нет «простого» способа сделать это, потому что привязки - это взаимно однозначные отношения.

Если вы хотите использовать привязки вы должны сделать одно свойство в модели с 3-мя вариантов:

typedef enum { 
    OptionValueA, 
    OptionValueB, 
    OptionValueBoth, 
} OptionValueType; 

@interface Model : ... 

... 

@property (assign) OptionValueType optionValue; 

... 

@end 

А также может при необходимости использовать трансформатор значения для привязки к кнопке.