将NSPopupButton索引绑定到多个布尔值

时间:2013-11-07 14:41:57

标签: objective-c macos cocoa cocoa-bindings

在我的OSX Cocoa应用程序中,我有一个具有两个BOOL属性的数据对象,称之为“OptionA”和“OptionB”

我需要向用户提供一个UI来设置这两个布尔值,但出于各种原因(主要是清晰度和美学)我想使用NSPopupButton有3个选项 - 比如“both set”,“Only A” ,“只有B”(“不”不是一种选择)。

我知道我可以使用NSPopupButton的目标/操作来检查索引并在代码中设置值,并使用KVO来捕获我的数据对象中的更改并设置NSPopupButton的索引。

我想这不是什么大问题,但是因为我试图围绕Cocoa Bindings并将其与其他UI元素一起使用,我想知道是否有更优雅的方法使用Cocoa Bindings而不编写这些胶水代码?

1 个答案:

答案 0 :(得分:1)

在你的情况下使用绑定并不是一个好主意,并且没有“简单”的方法来实现它,因为绑定是一对一的关系。

如果您想使用绑定,您应该在模型中使用3个选项创建一个属性:

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

@interface Model : ...

...

@property (assign) OptionValueType optionValue;

...

@end

还可以选择使用值转换器将其绑定到您的按钮。