2010-01-26 4 views
2

У меня есть табличное представление, к которому я добавляю столбцы динамически. Это должно быть сделано так, потому что я не могу предсказать, сколько или каких столбцов мне понадобится.Флажок в столбце таблицы не регистрируется.

Некоторые столбцы: checkboxes, но я не могу нажимать на них при запуске приложения. Столбец и флажок установлены для редактирования, но если я нажму на флажок, проверка не будет установлена. Я что-то упускаю?

Update

Как я (пытаюсь) установка состояния на флажке:

- (void)tableView:(NSTableView *)theTableView 
    setObjectValue:(id)theObject 
    forTableColumn:(NSTableColumn *)theColumn 
       row:(int)rowIndex 
{ 
    if (theTableView == resultsTableView) { 

     if ([[theColumn identifier] isEqualToString:CHCheckBoxColumnIdentifier]) { 

      NSInteger state = [[theColumn dataCell] state]; 
      if (state == NSOnState) { 
       [[theColumn dataCell] setState:NSOffState]; 
      } else { 
      [[theColumn dataCell] setState:NSOnState]; 
      } 

      /* 
      NSLog(@"%@", theObject); 
      NSLog(@"%@", theColumn); 
      NSLog(@"%i", rowIndex); 
      */ 
     } 
    } 
} 

ответ

2

ли ваши столбцы связаны с контроллером или вы используете протокол NSTableDataSource? Я подозреваю последнее, но вам нужно указать.

Исходя из моего предположения: щелчок по флажку обрабатывается так же, как и все остальное в методе -tableView:setObjectValue:forTableColumn:row:. Ваш объект будет состоять из кнопки ...

+0

Выполнение этого, но когда я делаю setState на NSButtonCell, он не устанавливается, поэтому я предположил, что это будет неправильный способ сделать это. – ruipacheco

+0

Когда вы задаете свое состояние, задаете ли вы таблицу -reloadData (или -reloadDataForRowIndexes: columnIndexes: если быть более точным)? –

+0

Нет. Просто установите состояние и все. Должен ли я попросить таблицу reloadData? Потому что это перезагрузит все из массива, и я потеряю флажок, который я только что проверил. – ruipacheco