Отключение определенных ячеек в NSTableView - PullRequest
5 голосов
/ 30 сентября 2011

У меня есть таблица с 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;
    }
}

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

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

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

1 Ответ

5 голосов
/ 30 сентября 2011

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

//...
else 
{
   [aCell setEnabled:YES];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...