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



我试图使一个cptablecolum列,可以改变值,而不必点击它。一个例子是我试图有一个滑块显示在表中,当拖动将改变表的值为行。

在查看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测试应用程序来演示它。在这些方面,卡布奇诺努力做到和Cocoa一样。

相关内容

  • 没有找到相关文章

最新更新