禁止通过可可结合多次选择NSMenuItems

时间:2015-03-28 21:52:15

标签: objective-c macos cocoa binding nsmenuitem

我在NSMenu中有多个NSMenuItems。我想做的是让他们中的一个同时处于状态。 (就像单选列表框一样。)

第一个选项是为它们实现目标/操作方法并编写代码来执行此操作。 但是如果可能的话我想使用cocoa绑定来做到这一点。

这是我想要做的。

我有一个可以设置为3个不同值(0,1,2)的变量。 该数字对应于菜单项(NSMenuItem0,NSMenuItem1,NSMenuItem2)。 其中一个NSMenuItems必须处于开启状态,其他的必须处于关闭状态。

初始状态,NSMenuItem0打开,NSMenuItem1和NSMenuItem2关闭,变量为0.如果用户单击NSMenuItem1,则NSMenuItem0,NSMenuItem2变为关闭状态,变量设置为1.

当变量以编程方式设置为2时,NSMenuItem2应该有检查,其他则不应该。

我试图创建3个属性对应每个项目的绑定值,并尝试自定义setter方法,但它不起作用,因为当用户单击已经处于状态的菜单项时,检查将被关闭。 (如果用户点击已经处于状态的项目,我想继续检查。)

我写的setter方法是这样的。

- (void)setItem0:(BOOL)b{
    if( _Item0 ){
        // It is already on state, don't want to change state.
        // But this doesn't affect to UI.
        // The internal variable is No but the NSMenuItem has check.
    }else{
        // Set other items to NO here ... (omit the code)
        // and change this property.
        _Item0 = enable; 
    }
}

我不知道我的方法是否完全错误,但我想不出实现这个目标的好方法。 有没有好办法呢?

0 个答案:

没有答案