每当我这样做时:
xxx = [NSImage imageNamed:@"Package.png"];
xxx 加载,但它的宽度和高度保持为0.每当我尝试将其加载到NSImageCell时,我都会收到此错误:
NSImageCell的对象值必须是NSImage。
有人可以帮帮我吗?我以前从未遇到过这个问题。
编辑:抱歉,我错过了这一点。因此,当我在数据源委托中执行此操作时,它不起作用,并在'返回单元格后显示上述错误; ”。
NSImageCell* cell = [[NSImageCell alloc] init];
[cell setObjectValue:xxx]; // Using imageNamed doesn't help either
编辑2:这变得更加恶化。我不明白发生了什么但是图像正确地加载了高度和宽度,但是当我将它添加到NSImageCell时它仍然会抱怨。
答案 0 :(得分:6)
我明白了 - 所以表格视图方面毕竟是相关的。
作为数据源,您的工作是返回(并在用户编辑的情况下接收列中单元格的对象值)。
但你没有回报这样的价值;你回来了一个牢房。因此,您尝试将图像单元格(由数据源创建)设置为图像单元格的值(该列所拥有的现有单元格)。
日志消息表明您在创建列时已将列的单元格设置为图像单元格,因此您现在需要做的就是更改数据源以始终返回列的对象值,而不是单元格。对于图像列,返回图像。对于文本列,返回字符串。
请注意,NSTableView不像UITableView那样工作,其中UITableViewCells是UIViews,并且屏幕上的行数与单元格一样多;在NSTableView中,每个NSTableColumn获取一个且只有一个数据单元,并且一个单元用于绘制每一行的该列。单元格绘制其提供给单元格的对象值,您可以通过从数据源方法返回它(对象值)来执行此操作。
有关控件的文档(NSTableView是一种NSControl)及其单元格是Control and Cell Programming Guide。
答案 1 :(得分:1)
我的猜测是它正在返回nil
,在这种情况下,获取宽度/高度将返回0.
尝试:
xxx = [NSImage imageNamed:@"Package"]; // the extension is not needed on the desktop or iOS 4
并确保将图像实际复制到应用程序的Resources文件夹中!
答案 2 :(得分:0)
事实上,确定你正在接收宽度和高度为零的NSImage实例(不是nil
),下一步是确定发生这种情况的原因。
representations
数组的输出是什么? (这应该包含在图像自己的描述中,但我明确地将它包含在内。)