Как установить SetEnabled: для NSButton в nstableView
-
13-10-2019 - |
Вопрос
Привет всем, у меня есть 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.
Этот код не проверен, но должен пролить свет на общую идею.