2010-01-26 69 views
2

我有一个表视图,而我动态地添加列。必须这样做,因为我无法预测我需要多少或哪些列。复选框上表列将不被记录点击

一些列checkboxes但是当我运行我的应用程序不能在上面点击。列和复选框设置为可编辑的,但如果点击复选框,则不会设置检查。我错过了什么吗?

更新

如何我(想)设置的复选框的状态:

- (void)tableView:(NSTableView *)theTableView 
    setObjectValue:(id)theObject 
    forTableColumn:(NSTableColumn *)theColumn 
       row:(int)rowIndex 
{ 
    if (theTableView == resultsTableView) { 

     if ([[theColumn identifier] isEqualToString:CHCheckBoxColumnIdentifier]) { 

      NSInteger state = [[theColumn dataCell] state]; 
      if (state == NSOnState) { 
       [[theColumn dataCell] setState:NSOffState]; 
      } else { 
      [[theColumn dataCell] setState:NSOnState]; 
      } 

      /* 
      NSLog(@"%@", theObject); 
      NSLog(@"%@", theColumn); 
      NSLog(@"%i", rowIndex); 
      */ 
     } 
    } 
} 

回答

2

是你列绑定到一个控制器或者您使用的是NSTableDataSource协议?我怀疑后者,但你需要指定。

去上我的假设:在复选框点击的处理方式作为-tableView:setObjectValue:forTableColumn:row:方法什么都一样。你的目标将是按钮的状态...

+0

这样做,但我做的NSButtonCell它不会设置的setState,所以我认为这将是错误的方式去这样做。 – ruipacheco 2010-01-27 11:40:33

+0

当你设置你的状态时,你是问表-reloadData(或-reloadDataForRowIndexes:columnIndexes:更精确)? – 2010-01-27 12:12:47

+0

没有。只需设置状态即可。我应该问表重新加载数据?因为这会重新加载阵列中的所有内容,我会丢失刚刚检查过的复选框。 – ruipacheco 2010-01-27 12:17:24