2012-01-03 3 views
0

클릭하지 않고도 값을 변경할 수있는 CPTableColumn을 만들려고합니다. 예를 들어 테이블에 슬라이더를 표시하려고하면 드래그하면 행의 테이블 값이 변경됩니다.카푸치노 사용자 정의 편집 가능한 테이블 열을 만드는 방법

CPTableView를 살펴보면 CPTextFields 및 CPButtons가 지원되지만 다른 컨트롤을 사용하여 값의 인라인 편집을 수행하는 방법을 잘 모르겠습니다.

위의 사항에 대한 도움이 될 것입니다.

답변

0

당신은 쉽게 다음과 같은 테이블보기로 슬라이더를 추가 할 수 있습니다 : 당신이 값이 숫자 확인으로

var dataColumn = [[CPTableColumn alloc] initWithIdentifier:"Slider"]; 
[table addTableColumn:dataColumn]; 
[[dataColumn headerView] setStringValue:"Slider (Editable)"]; 
[dataColumn setEditable:YES]; 
[dataColumn setWidth:140]; 
[dataColumn setDataView:[[CPSlider alloc] initWithFrame:CGRectMakeZero()]]; 

슬라이더는 자동으로 데이터 소스 또는 한 바인딩에서 읽은 셀 값을 반영합니다 .

유감스럽게도 슬라이더가 버튼이 아니기 때문에 테이블에 tableView:setObjectValue:forTableColumn:row: 메시지가 전송되지 않습니다. CPSlider을 하위 클래스 YES에서 isKindOfClass:[CPButton class]으로 반환 할 수 있습니다.

이것은 해킹처럼 느껴지므로 장기적인 솔루션으로는 코코아가 CPSlider 셀을 처리하는 방법을 확인하십시오. 코코아가 슬라이더에 tableView:setObjectValue:forTableColumn:row:을 전송하면 feature request을 게시하고 작은 코코아 테스트 앱을 포함시켜 보여줍니다. 카푸치노는 이러한 문제에서 코코아와 같은 방식으로 일하기 위해 노력합니다.

+0

고마워요! 이제는 해킹이 제대로 작동합니다. CPButton과 대조적으로 CPControl을 확인하지 않는 것이 이상하다고 생각합니다. 나는 그들에게 기능 요청을 던질 것이다. – zachzurn

관련 문제