2

有没有办法为 NSTableColumn 的每一行显示不同的小图像(图标)?

我不一定需要为其添加新列,我想知道是否可以在每行文本的前面添加图标。

我知道有方法:- (void)setDataCell:(NSCell *)aCell。但是,这种方法似乎对所有行都使用相同的单元格,这不是我想要的。

这个问题有没有不需要子类化 NSTableColumn 的解决方案?如果没有,我应该继承什么?

谢谢

4

1 回答 1

0

将相关列的单元格设为 NSImageCell。您可以在 Interface Builder 中通过将“图像单元”从对象库拖到列上来执行此操作。然后选择该列,您将能够通过 Data、Value、Value Path 或 Valueurl 绑定之一绑定到图像源。选择哪一个取决于模型中的源属性是分别返回 NSData、NSImage、NSString 路径还是 NSURL url。有关更多完整信息,请参阅有关 NSImageCell 绑定的文档。

每行的单元格都是相同的,因为它们是一个轻量级的类,用作绘图的性能优化。这并不意味着每一行都必须使用单元格来绘制相同的图像,就像文本列的单元格必须为每一行绘制相同的字符串一样。

如果您确实需要图像与文本在同一列中,您将不得不做一些更像 duDE 解释的事情。在我的脑海中,我相信在这种情况下绑定应该仍然是可能的,但是你必须编写更多的代码才能使其工作。与其那样做,我可能会改用基于视图的 NSTableView,这使得将多个视图放在单个列/行中变得容易,并且可以让您继续使用绑定而无需任何额外工作。

编辑: duDE 的答案已被删除,但总而言之,它建议创建一个自定义 NSCell 子类来绘制图像和文本。

于 2013-03-04T18:10:04.230 回答