我有一个 NSTableView 绑定到一个有两列的 NSArrayController 。一列绑定到阵列控制器的排列对象并显示一个字符串。
我想在另一列中显示图像,但我无法让它工作。我已将 NSImageCell 拖到列并手动设置图像,但它不会在运行时显示。我已经仔细检查过,图像在我的资源目录中。
我错过了什么吗?我还应该怎么做才能使该图像出现?
我有一个 NSTableView 绑定到一个有两列的 NSArrayController 。一列绑定到阵列控制器的排列对象并显示一个字符串。
我想在另一列中显示图像,但我无法让它工作。我已将 NSImageCell 拖到列并手动设置图像,但它不会在运行时显示。我已经仔细检查过,图像在我的资源目录中。
我错过了什么吗?我还应该怎么做才能使该图像出现?
所以你想让每一行都显示相同的图像吗?这就是你“手动”设置它的原因吗?为此,您可以将 NSTableViewDataSource 方法与绑定混合使用。这个想法是您的字符串列将照常绑定,但您的图像列未绑定。它有自己的标识符集(如“imageColumn”)。然后,您使用 numberOfRowsInTableView: 和 tableView:objectValueForTableColumn:row: 来提供数组控制器的对象计数(因此它具有正确的行数),并且在它要求右列的值时总是简单地返回您的静态图像(检查 id对于您的“imageColumn”),否则返回 nil。
如果图像不是静态的(也就是说,您想将其用作某种指标),您可以使用上述方法(返回一些基于某个值的图像)或绑定。要使用绑定,您可以将属性添加到数组控制器所持有的任何类,例如“状态”(数字)。然后,您将使用自定义 NSValueTransformer 将状态编号转换为相应的图像。您的列将绑定到数组控制器的排列对象.status,使用值转换器(有关使用说明,请参阅 NSValueTransformer - 您必须注册它,然后使用它的名称)。结果是您的列中对应于特定状态的图像。