Cocoa 获取NSMatrix中NSButtonCell的当前状态

Cocoa 获取NSMatrix中NSButtonCell的当前状态,cocoa,nsmatrix,Cocoa,Nsmatrix,我将NSMatrix用作键盘并调用: [selectedCell setEnabled:NO]; [selectedCell setTransparent:YES]; 选择一个键时(防止再次执行相同的操作)。但是,我也希望在完成后可以“翻转”整个选择,即替换所有已删除的单元格并隐藏剩余的(未选择的)单元格 是否可以循环我的矩阵的所有单元格,并使用以下方法检查它们的启用/透明状态: if([selectedCell isEnabled] == NO) NSLog(@"the cell is

我将NSMatrix用作键盘并调用:

[selectedCell setEnabled:NO];
[selectedCell setTransparent:YES];
选择一个键时(防止再次执行相同的操作)。但是,我也希望在完成后可以“翻转”整个选择,即替换所有已删除的单元格并隐藏剩余的(未选择的)单元格

是否可以循环我的矩阵的所有单元格,并使用以下方法检查它们的启用/透明状态:

if([selectedCell isEnabled] == NO)
  NSLog(@"the cell is disabled");
if([selectedCell isTransparent] == YES)
  NSLog(@"the cell is transparent");
当然,上面的代码不起作用,但是你明白了。。。我是一个相对的新手,所以任何帮助都将不胜感激。谢谢:-)

更新!! 好了,伙计们,我已经解决了这个问题:

for(key=1; key <= 16; key++)
if([[numericKeypad cellWithTag:key] isTransparent] == YES)
    // ...or alternatively...
    // if([[numericKeypad cellWithTag:key] isEnabled:NO])
    {
    [[numericKeypad cellWithTag:key] setTransparent:NO];
    [[numericKeypad cellWithTag:key] setEnabled:YES];
    }
else
    {
    //...disable it...
    }
for(key=1;keyNSMatrix让您获得and,and。因此,在几个
for
循环中实现这一点


按标记进行可以工作,但要求您为每个单元格提供自己的标记,并且(在您展示的示例中)所有标记都是一个系列。任何奇数、重复标记或未标记的单元格都会导致问题。

我使用
NSNumber
存储无线组的选定索引(在界面生成器中作为
NSMatrix
处理)。为了实现这一点,我合成了一个成员变量,为其设置无线电组的“选定索引”绑定

@interface MyClass {
  NSNumber* m_selectedIndex;
}
@property (readwrite, assign) NSNumber* selectedIndex;
此外,我还添加了一个枚举以使值具有可读性

typedef enum { APPLE = 0, PLUM = 1 } SELECTION_STATE;

谢谢你的提示,Peter。这是一个更干净的方法,也省去了将矩阵大小“硬连接”到应用程序中的需要。感谢你的反馈!