2011-09-30 63 views
4

我有一个4列的tableview。拳头有一些文字,其他3个是复选框。
我需要在一个特定的行中禁用3个复选框中的2个。我将行号保存在一个NSInteger变量上。禁用NSTableView上的特定单元格

我实现:

- (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行,只有column1column2)?

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

回答

4

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

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

太好了,谢谢!那样做了。 –

相关问题