我在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;
}
}
我不知道我的方法是否完全错误,但我想不出实现这个目标的好方法。 有没有好办法呢?