Отключение определенных ячеек в NSTableView

#objective-c #macos #cocoa

#objective-c #macos #cocoa

Вопрос:

У меня есть tableview с 4 столбцами. Первый содержит некоторый текст, а остальные 3 являются флажками.
Мне нужно отключить 2 из 3 флажков в одной конкретной строке. Я сохраняю номер строки в переменной NSInteger.

Я реализовал:

 - (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex 
  

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

 - (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex 
{    
    if(([[aTableColumn identifier] isEqualToString:@"column1"]) || ([[aTableColumn identifier] isEqualToString:@"column2"]))
    {   
        if (rowIndex == myindex)    // myindex holds the row index where I need to disable the cells 
        {
            [aCell setEnabled:NO];
        }
    }  
    else
    {
        return;
    }
}
  

То, что происходит, странно. Столбцы 1 и 2 для моей конкретной строки отключены, пока я не щелкну другую строку, тогда все строки отключат эти два столбца.

Как мне отключить эти две очень специфические ячейки (только в myindex строке и только column1 и column2 )?

это приложение для Mac OS X, а не приложение для iOS.
Спасибо

Ответ №1:

Вы должны явно устанавливать enabled свойство каждый раз для обоих случаев.

 //...
else 
{
   [aCell setEnabled:YES];
}