在NSMatrix中获取NSButtonCell的当前状态

时间:2010-01-14 14:34:37

标签: cocoa nsmatrix

我正在使用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");

上面的代码当然不起作用,但你明白了......我是一个相对新手,所以任何帮助都会非常感激。谢谢: - )

3 个答案:

答案 0 :(得分:1)

NSMatrix可让您获得the number of columnsthe number of rows以及the cell at a specific row and column。所以,在几个for循环中执行此操作。

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

答案 1 :(得分:1)

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

@interface MyClass {
  NSNumber* m_selectedIndex;
}
@property (readwrite, assign) NSNumber* selectedIndex;

此外,我添加了一个枚举,使值可读。

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

答案 2 :(得分:0)

UPDATE !! 好的伙计们,我用以下方法解决了这个问题:

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...
    }

似乎我一直非常接近,但由于缺乏经验,我努力寻找合适的语法一整天。非常感谢:-)