0

我正在尝试制作一个无需单击即可更改值的 CPTableColumn。一个例子是我试图在表格中显示一个滑块,当拖动它时会更改该行的表格值。

在查看 CPTableView 时,我看到支持 CPTextFields 和 CPButtons,但我不确定如何使用任何其他控件来允许内联编辑值。

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

4

1 回答 1

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].

这确实感觉像是一种 hack,因此为了获得更好的长期解决方案,请检查 Cocoa 如何处理 CPSlider 单元格。如果 Cocoa 发送tableView:setObjectValue:forTableColumn:row:滑块,请继续发布功能请求并包含您的小 Cocoa 测试应用程序来演示它。Cappuccino 努力在这些问题上与 Cocoa 一样工作。

于 2012-01-03T13:27:14.470 回答