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

+0

상태를 설정할 때 테이블에 -reloadData (또는 -reloadDataForRowIndexes : columnIndexes :보다 정확하도록 요청)를 요청합니까? –

+0

아니요. 그냥 국가를 설정하면됩니다. 테이블에 reloadData를 요청해야합니까? 그게 배열에서 모든것을 다시로드하고 난 그냥 체크 박스를 잃을 것이기 때문에. – ruipacheco

관련 문제