Вопрос

Привет всем, у меня есть NSTABLEVIEW, в котором есть три столбца. Первый - флажок, а третий - кнопка. Кнопка «включена» состояние зависит от того, проверяется ли флажок.

Я устанавливаю содержание таблицы в awakeFromNib Метод и я реализую состояние флажки в - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row метод Мне нужно найти способ setEnabled: для NSButton

Спасибо

Нет правильного решения

Другие советы

Хороший способ установить состояния кнопки в nstableView - использовать NSArrayController и привязать его с столбцами NSTableView:

  • Свяжите столбец, который содержит кнопки с nsarraycontroller (см. этот пример)
  • Под Включено
    • Установить Controller Key к Аранжировки
    • Установить Model Key Path к кнопке NsarrayController. Например, давайте назовем это включено .

Теперь в классе, где у вас есть NsarrayController и NstableView, сделайте что -то подобное после того, как вы нажмете на флажок:

- (void)updateArrayControllerWithButtonState: (BOOL)isEnabled
{
    // theTable is the NSTableView instance variable
    NSInteger row = [theTable clickedRow];

    // Get the array of values that populates the table
    NSMutableDictionary *arrayValues = [[theArrayController arrangedObjects] objectAtIndex:row];

    // Actually change the NSArrayController's value to match
    [arrayValues setObject:[NSNumber numberWithBool:[model isEnabled]] forKey:@"enabled"];

    [theTable reloadData];
}

При условии, что вы правильно настроили свои привязки для nsarraycontroller & nstableView, эта функция должна обновить текущее состояние кнопки в соответствии с состоянием NSArrayController.

Этот код не проверен, но должен пролить свет на общую идею.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top