2012-01-03 51 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