2012-01-03 36 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以使其返回YESisKindOfClass:[CPButton class]

這種感覺就像是黑客,所以爲了更好的長期解決方案,請檢查Cocoa如何處理CPSlider單元。如果Cocoa爲滑塊發送tableView:setObjectValue:forTableColumn:row:,請繼續併發布feature request,幷包含您的小可可測試應用程序來演示它。卡布奇諾努力在這些事情上像可可一樣工作。

+0

謝謝!黑客現在可以正常工作。我覺得奇怪的是他們沒有檢查CPControl,而是檢查CPButton。我會給他們一個功能請求。 – zachzurn 2012-01-03 19:28:55