如何在卡布奇诺制作自定义可编辑表格列

时间:2012-01-03 06:21:03

标签: cappuccino

我正在尝试创建一个可以更改值而不必单击它的CPTableColumn。一个例子是我试图在表格中显示一个滑块,当拖动时会改变该行的表值。

在查看CPTableView时,我发现支持CPTextFields和CPButton,但我不知道如何使用任何其他控件来允许内联编辑值。

对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分: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并添加您的小Cocoa测试应用程序来演示它。卡布奇诺在这些问题上努力与可可一样工作。