objective-c - 使用绑定(bind)将图像插入 NSTableView

标签 objective-c cocoa nstableview nsimagecell

我有一个 NSTableView 绑定(bind)到一个具有两列的 NSArrayController 。一列绑定(bind)到阵列 Controller 的排列对象并显示一个字符串。

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

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

最佳答案

那么您想让每行显示相同的图像吗?这就是你“手动”设置它的原因吗?为此,您可以将 NSTableViewDataSource 方法与绑定(bind)混合使用。这个想法是你的字符串列将像往常一样被绑定(bind),但你的图像列没有绑定(bind)。它有自己的标识符集(如“imageColumn”)。然后,您使用 numberOfRowsInTableView: 和 tableView:objectValueForTableColumn:row: 提供数组 Controller 的对象计数(因此它具有正确的行数),并且在请求右列的值时始终返回静态图像(检查 id对于你的“imageColumn”),否则返回 nil。

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

关于objective-c - 使用绑定(bind)将图像插入 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386463/

相关文章:

ios - 如何在 IOS 9 的 UIAlertController 中添加按钮

iphone - NSURLConnection 在我得到 Error Domain=NSPOSIXErrorDomain Code=57 后不会响应

ios - 从容器 View 中抓取数据

ios - 如何在 objective-c 框架函数中将可选依赖项的参数作为参数传递

swift - 创建分页 PDF—Mac OS X

objective-c - 如何在协议(protocol)中定义和实现属性

macos - 获取 Cocoa 中事件应用程序中当前选定的文本

cocoa - 如何使用 NSComboBoxCell、NSTableView 和 Core Data 设置关系

cocoa - NSTableView:如何在选定行之前和之后绘制自定义分隔符

xcode - 如何为 NSTableView 单元格添加填充到单元格?