使用绑定将图像插入NSTableView

时间:2010-03-05 11:56:35

标签: objective-c cocoa nstableview nsimagecell

我有一个NSTableView绑定到一个带有两列的NSArrayController。一列绑定到阵列控制器的排列对象并显示一个字符串。

我想在另一列中显示图像,但我无法使其正常工作。我已经将NSImageCell拖到了列上并手动设置了图像,但它不会在运行时显示出来。我已经仔细检查了,图片在我的资源目录中。

我错过了什么吗?我还应该做些什么来使图像出现?

1 个答案:

答案 0 :(得分:2)

所以你想为每一行显示相同的图像?这就是为什么你“手工”设置它?为此,您可以将NSTableViewDataSource方法与绑定混合使用。这个想法是你的字符串列将照常绑定,但你的图像列没有绑定。它有标识符集(如“imageColumn”)。然后使用numberOfRowsInTableView:和tableView:objectValueForTableColumn:row:来提供数组控制器的对象计数(因此它具有正确的行数),并且当它要求输入右列的值时,它总是返回静态图像(检查id对于你的“imageColumn”),否则返回nil。

如果图像不是静态的(也就是说,您希望将其用作某种指示符),则可以使用上述方法(基于某些值返回某些图像)或绑定。要使用Bindings,您可以将属性添加到阵列控制器所持有的任何类,例如“status”(数字)。然后,您将使用自定义NSValueTransformer将状态编号转换为相应的图像。您的列将使用值转换器绑定到数组控制器的arrangeObjects.status(有关使用说明,请参阅NSValueTransformer - 您必须注册它,然后使用其名称)。结果是列中与特定状态对应的图像。