cocoansmatrix

Getting the current state of NSButtonCell in an NSMatrix


I'm using an NSMatrix as a keypad and calling:

[selectedCell setEnabled:NO];
[selectedCell setTransparent:YES];

when a key is selected (to prevent the same operation being performed again). However, I'd also like the option of 'flipping' the entire selections when done -- that is, replacing all the deleted cells and hiding the remaining (unselected) ones.

Is it possible to loop through all the cells of my matrix and check their enabled/transparent state using something like:

if([selectedCell isEnabled] == NO)
  NSLog(@"the cell is disabled");
if([selectedCell isTransparent] == YES)
  NSLog(@"the cell is transparent");

The above code doesn't work of course, but you get the idea... I'm a relative newbie, so any help would be much appreciated. Thanks :-)


Solution

  • NSMatrix lets you get the number of columns and the number of rows, and the cell at a specific row and column. So, do that in a couple of for loops.

    Going by tag can work, but requires that you give every cell its own tag, and (in the example you show) that all the tags are in a series. Any odd numbers out, duplicate tags, or untagged cells will cause problems.