首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能创建一个NSImage?

不能创建一个NSImage?
EN

Stack Overflow用户
提问于 2010-08-18 22:08:45
回答 3查看 2.8K关注 0票数 1

每当我这样做:

代码语言:javascript
复制
xxx = [NSImage imageNamed:@"Package.png"];

xxx加载,但其宽度和高度保持为0。每当我尝试将它加载到NSImageCell中时,就会得到以下错误:

NSImageCell的对象值必须是NSImage。

有人能帮我吗?我以前从没遇到过这个问题。

编辑:对不起,我错过了这一点。因此,当我在数据源委托中执行此操作时,它不起作用,并在“返回单元格;”之后显示上述错误。

代码语言:javascript
复制
NSImageCell* cell = [[NSImageCell alloc] init];
[cell setObjectValue:xxx]; // Using imageNamed doesn't help either

编辑2:这正变得越来越严重。我不明白发生了什么,但是图像正确地加载高度和宽度,但是当我将它添加到NSImageCell时,它仍然会发出抱怨。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-19 06:38:49

我明白了-所以表视图方面毕竟是相关的。

作为数据源,您的工作是返回(在用户编辑的情况下)列中单元格的对象值。

但你不是在返回这样的值,而是返回一个单元格。因此,您试图将图像单元格(由数据源创建)设置为图像单元格(列拥有的现有单元格)的值。

日志消息表明,在创建列时,您已经将列的单元格设置为图像单元格,因此,现在所需要做的就是更改数据源,以始终返回列的对象值,而不是单元格。对于图像列,返回图像。对于文本列,返回字符串。

请注意,NSTableView的工作方式与UITableView不同,其中UITableViewCells是UIViews,屏幕上有与行相同的单元格;在NSTableView中,每个NSTableColumn只获得一个数据单元格,并且使用一个单元格来绘制每行的该列。单元格绘制其对象值,提供给单元格,通过从数据源方法中返回它(对象值)来完成此操作。

关于控件的文档( NSTableView是一种NSControl),它们的单元是控制和单元程序设计指南

票数 6
EN

Stack Overflow用户

发布于 2010-08-18 22:13:04

我猜它将返回nil,在这种情况下,获得宽度/高度将返回0。

尝试:

代码语言:javascript
复制
xxx = [NSImage imageNamed:@"Package"]; // the extension is not needed on the desktop or iOS 4

并确保图像实际上正在被复制到应用程序的参考资料文件夹中!

票数 1
EN

Stack Overflow用户

发布于 2010-08-19 04:51:01

在确定您实际上正在接收宽度和高度为零的NSImage实例(而不是nil)之后,下一步是确定发生这种情况的原因。

  1. 你能在预览中打开Package.png吗?
    1. 如果是这样的话:预览信息窗口中的宽度和高度是多少?它有任何分辨率(DPI或像素/米)信息吗?如果是的话,这说明了什么?
    2. 如果您打开应用程序包,您能在预览中打开Package.png的副本吗?

  1. 当您记录图像的描述时,输出是什么?
  2. 记录图像的representations数组的输出是什么?(这应该包含在图像本身的描述中,但如果不是,我会显式地包含它。)
  3. 如果删除构建文件夹并重新构建,会发生什么情况?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3517123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档