2010-01-26 62 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