Получение текущего состояния NSButtonCell в NSMatrix - PullRequest
0 голосов
/ 14 января 2010

Я использую NSMatrix в качестве клавиатуры и звоню:

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

при выборе клавиши (для предотвращения повторного выполнения той же операции). Тем не менее, я бы также хотел, чтобы опция «переворачивала» все выделенные элементы, когда это было сделано, то есть заменяла все удаленные ячейки и скрывала оставшиеся (невыбранные) . 1008 *

Можно ли обойти все ячейки моей матрицы и проверить их включенное / прозрачное состояние, используя что-то вроде:

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

Приведенный выше код, конечно, не работает, но вы поняли ... Я относительный новичок, поэтому любая помощь будет принята с благодарностью. Спасибо: -)

Ответы [ 3 ]

1 голос
/ 16 января 2010

NSMatrix позволяет получить количество столбцов и количество строк и ячейка в определенной строке и столбце . Итак, сделайте это за пару for циклов.

Движение по тегу может работать, но требует, чтобы вы присваивали каждой ячейке свой собственный тег и (в показанном вами примере) все теги были в серии. Любые нечетные числа, дубликаты тегов или непомеченные ячейки вызовут проблемы.

1 голос
/ 12 октября 2010

Я использую NSNumber для сохранения выбранного индекса радиогруппы (обрабатывается как NSMatrix в Интерфейсном Разработчике). Чтобы понять это, я синтезирую переменную-член, для которой я установил «Выбранный индекс» привязка радиогруппы.

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

Кроме того, я добавил перечисление, чтобы сделать значения понятными человеку.

typedef enum { APPLE = 0, PLUM = 1 } SELECTION_STATE;
0 голосов
/ 15 января 2010

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

Кажется, я все время был довольно близок, но целый день боролся, пытаясь найти правильный синтаксис из-за неопытности. В любом случае, большое спасибо :-)

...