0

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

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

4

3 回答 3

1

NSMatrix 允许您获取数和行数,以及特定行和列的单元格。所以,在几个for循环中做到这一点。

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

于 2010-01-16T07:16:26.387 回答
1

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

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

此外,我添加了一个枚举以使值具有人类可读性。

typedef enum { APPLE = 0, PLUM = 1 } SELECTION_STATE;
于 2010-10-12T14:21:45.480 回答
0

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

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

似乎我一直很接近,但由于缺乏经验,我挣扎了一整天试图找到正确的语法。无论如何都非常感谢:-)

于 2010-01-15T01:04:16.330 回答