我正在尝试制作一个无需单击即可更改值的 CPTableColumn。一个例子是我试图在表格中显示一个滑块,当拖动它时会更改该行的表格值。
在查看 CPTableView 时,我看到支持 CPTextFields 和 CPButtons,但我不确定如何使用任何其他控件来允许内联编辑值。
对此的任何帮助都会很棒。
我正在尝试制作一个无需单击即可更改值的 CPTableColumn。一个例子是我试图在表格中显示一个滑块,当拖动它时会更改该行的表格值。
在查看 CPTableView 时,我看到支持 CPTextFields 和 CPButtons,但我不确定如何使用任何其他控件来允许内联编辑值。
对此的任何帮助都会很棒。
您可以轻松地将滑块添加到表格视图,如下所示:
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]
.
这确实感觉像是一种 hack,因此为了获得更好的长期解决方案,请检查 Cocoa 如何处理 CPSlider 单元格。如果 Cocoa 发送tableView:setObjectValue:forTableColumn:row:
滑块,请继续发布功能请求并包含您的小 Cocoa 测试应用程序来演示它。Cappuccino 努力在这些问题上与 Cocoa 一样工作。