禁用NSTableView上的特定单元格

Mr *_*eph 5 macos cocoa objective-c

我有4列的tableview.第一个有一些文本,另外三个是复选框.
我需要在一个特定行中禁用3个复选框中的2个.我将行号保留在NSInteger变量上.

我实施了:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex 
Run Code Online (Sandbox Code Playgroud)

我检查列标识符以了解我是否在右列,一旦我知道我检查行是否正确并将单元格设置为禁用.代码如下:

- (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;
    }
}
Run Code Online (Sandbox Code Playgroud)

发生什么事很奇怪.我的特定行的Colum1和Colum2被禁用,直到我单击另一行,然后所有行都禁用这两列.

如何禁用这两个非常特殊的细胞(仅在myindex行和仅column1column2)?

这是一个Mac OS X应用程序,而不是iOS应用程序.
谢谢

Mun*_*ndi 5

您必须enabled每次都为这两种情况明确设置属性.

//...
else 
{
   [aCell setEnabled:YES];
}
Run Code Online (Sandbox Code Playgroud)