2012-01-03 14 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セルを処理する方法を確認してください。 CocoaがスライダーにtableView:setObjectValue:forTableColumn:row:を送信した場合は、feature requestを投稿して、小さなCocoaテストアプリを組み込んでデモンストレーションしてください。カプチーノは、これらの問題でココアと同じように働くよう努めています。

+0

ありがとうございます!ハックは今のところうまく動作します。 CPButtonとは対照的に、CPControlをチェックしないのは変だと思います。私は彼らに機能要求を投げます。 – zachzurn

関連する問題