как установить setEnabled: для NSButton в NSTableView - PullRequest
0 голосов
/ 26 декабря 2010

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

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

Спасибо

1 Ответ

0 голосов
/ 28 октября 2011

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

  • Привязать столбец, содержащий кнопки, к NSArrayController (см. этот пример )
  • Под Включено
    • Установите Controller Key на ограмму объектов
    • Установите Model Key Path до состояния кнопки NSArrayController.Например, давайте назовем это enabled .

Теперь в классе, где у вас есть 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.

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

...