无法加载从设备上运行的包中的nib引用的映像

时间:2011-01-31 17:11:53

标签: iphone objective-c xcode

SplitView[1290:307] Could not load the "canary04.png" image referenced from a nib in the bundle with identifier "xx.co.mycompany.ipad.SplitView"

我只在设备上运行时遇到错误。在模拟器中运行没有问题。

我正在使用UIImageView在界面构建器中直接使用该图像。

编辑:我已经为不同的笔尖添加了一个不同的新图像,这没有任何问题。

有人有什么想法吗?

32 个答案:

答案 0 :(得分:130)

它可能没有添加到您的目标中,在XCode 4中您可以这样做:

  • 在项目视图中,单击您的项目名称
  • 选择目标并选择“构建阶段”标签
  • 将您的图片文件拖到“复制捆绑资源”部分

为我修好了。

答案 1 :(得分:28)

iOS设备上的文件系统区分大小写,因此很可能是一个案例问题。 (Mac OS X通常不区分大小写,因此您在模拟器中没有看到此问题。)

因此,检查您在代码中使用与文件名本身相同的大小写。

答案 2 :(得分:20)

您是否在XCode(蓝色文件夹)中的引用文件夹中有图像?如果是这样,你必须在图像路径中包含文件夹名称,如“Images / canary04.png”

答案 3 :(得分:14)

简单方法

1 只需在命令shell中执行grep即可找到引用图像的字符串:

grep -R 'canary04.png' YourMainDirectoryFolder/*

2 它会给你(例如)这样的输出:

YourProject/en.lproj/YourViewController.xib: 

<textField borderStyle="roundedRect" background="canary04.png" id="19">

3 您现在知道哪个nib文件和哪个元素。只需进入文件并删除引用。

答案 4 :(得分:8)

  1. 删除图像所在的蓝色文件夹。
  2. 再次导入并选择&#34;根据需要复制项目&#34;。
  3. 选择&#34;创建群组&#34;不是文件夹

答案 5 :(得分:5)

您可以执行此操作以从故事板或笔尖进行检查。打开它作为源代码:

enter image description here

然后“查找”其中的图像名称,查看它是否存在但在项目中已经无效,可能您已删除或更改了其名称,现在它似乎无效。

enter image description here

答案 6 :(得分:5)

将图像另存为PNG-24。它对我有用

答案 7 :(得分:4)

您是否已将该文件包含在目标中?右键单击Xco​​de中的Target,选择Get Info并选择顶部的“Targets”组。确保检查您的预期目标。

祝你好运。

修改 上面的文字应该已阅读在Xcocde中右键单击文件(canary04.png)并选择获取信息...

抱歉打字错误。

答案 8 :(得分:4)

升级到Xcode 4.4.1时遇到了这个问题。我发现虽然我已经删除了故事板中的图像(和相应的按钮等),但我的故事板文件中仍然提到它们(在tabBarItems字段中)。我手动评论了他们(),产品 - &gt;干净,我没有再收到错误。

我知道故事板中必须有虚假引用,因为我之前删除了我的TabBar并且当前的应用程序没有问题,只是在控制台中有令人讨厌的消息。

答案 9 :(得分:3)

解决方案1:

在我的情况下,我复制了包含图像的文件夹,甚至选中了“目的地:根据需要复制项目”。但是它尚未添加到“Build Phases”的“Copy Bundle Resources”中。

您可以按如下方式添加图片:

  1. 选择目标
  2. 选择“构建阶段”标签
  3. 选择“复制捆绑资源
  4. 点击下面的“+”(加号)按钮
  5. 找到图片并添加
  6. Screenshot for solution 1

    解决方案2:

    通过选择“Move to thrash”删除图像。再次在项目中添加图像,并选中“目的地:复制项目(如果需要)”。

    Note : Make sure that you add images in Assets.xcassets folder and not outside it.
    

答案 10 :(得分:3)

在我的情况下,这是因为Photoshop没有正确保存我的文件。在文件保存对话框中,我单击myfile.png试图覆盖该文件,并且它使用png扩展名保存文件,但是以photoshop格式保存。

我必须确保在单击要覆盖的文件之前实际将文件格式更改为PNG,从而保存在实际的png文件中,因此可以被iOS读取。有趣的是,界面构建器显示我的psd-as-png文件就好了。

更一般地说,确保您的文件实际上采用您认为的格式,因此iOS正在期待。

答案 11 :(得分:3)

我有同样的问题。试着

  • 清洁
  • 构建并运行

它与我合作

答案 12 :(得分:2)

我也遇到了这个错误。我将描述我的情景:

我有一个子目录“img”,里面有一些png 其中一个png是“ic_timeprogress_000.png”

在故事板(视觉设计师)中,我有一个imageView,图像设置为“ic_timeprogress_000.png”(不是以编程方式)。设计师正确显示了imageView:

imageView in subdirectory

虽然在运行应用程序时,却抛出了错误。

所以在故事板中我改变了(我坚持:不是以编程方式)从“ic_timeprogress_000.png”到“img / ic_timeprogress_000.png”,导致无法正确显示设计器中的图像但在运行时正确显示(无错误) )

imageView in subdirectory

虽然我以编程方式改变imageView.image,但是这个“初始图像”从未使用过。

答案 13 :(得分:1)

我还遇到了无法成功加载jpeg文件的问题,但是我解决了它而没有将它们更改为png格式:例如,如果你有一个名为&#34; bg.jpg&#34; <的图像/ strong>,不要在故事板中使用&#34; bg&#34; (此名称列在下拉列表选择列表中),而应明确写入&#34 ; bg.jpg&#34; 在名称字段中。

对于基于编程的图像视图,我想使用像[UIImage imageNamed:@"xx.jpg"]这样的.jpg扩展也应该可以工作(尽管我做了测试)。

答案 14 :(得分:1)

我在iOS 8中遇到了另一个问题。在我的情况下,问题是我为图像集选择了特定于设备,然后选择了iPad。将此更改回通用修复了问题。

此设置可在images.xcassets文件中找到,在第三列中显示图像集的属性检查器。

在这种情况下,即使您已将图像添加到images.xcassets,图像也不会显示在故事板或NIB文件中。它们也不会在模拟器或设备中显示。

答案 15 :(得分:1)

当我尝试在Interface Builder(.xib)文件中设置imageView的图像时,我遇到了这个问题。

(我使用的是图像资产)

我有theImage.jpegtheImage@2x.jpg的2张图片 Interface Builder可以在编译时使用这些jpg / jpeg格式显示真实图像。但我在运行时遇到了这个错误:

Could not load the "theImage" image referenced from a nib in the bundle with identifier "org.etc.etc"

然后我将图像文件格式更改为.png并且它有效!

如果您尝试设置的图片格式不同,请尝试使用此解决方案。

答案 16 :(得分:1)

检查以确保项目中存在canary04.png,并且该项目未被删除。

答案 17 :(得分:1)

检查您的图片名称。如果它包含一些空格,那么图像将在模拟器中运行时显示,但不会在设备中运行。运行时会检查区分大小写的名称等。

答案 18 :(得分:1)

我的问题是我将图像保存为.jpg并将名称更改为.png(仍为jpg格式)。它适用于模拟器

答案 19 :(得分:0)

在我的情况下,所有图片都在使用&gt; iOS 7而不是iOS 6.1的设备上正常显示。 解决方案是iOS7区分大小写,但iOS 6.1不适合我。我的图像名为“myImageName”,并且名为“myimagename”,导致我的旧iPhone 3无法显示这些图像。
所以重命名就解决了它。

答案 20 :(得分:0)

在这里尝试了每一个答案,没有,所以这里是另一个小故障,你的图标名称不能有点(。)因为如果它(和Xcode允许你这样做!),而图标在故事板中显示得很好,他们赢了不要在模拟器或设备中加载。

答案 21 :(得分:0)

我对Xcode 5有这个问题,似乎“合并高分辨率艺术品”是罪魁祸首。我打开了应用程序包,所有图像都是* .tiff,导致图像“找不到”:S

<强> FIX

打开项目设置,在顶部搜索“合并”。将该设置更改为NO。

enter image description here

出于某种原因,每个人都错过了这个重要的解决方案。

答案 22 :(得分:0)

也许在设置按钮的图像后,您更改了图像的名称。

答案 23 :(得分:0)

2015 - 仍然有这个问题。我正在引用一个标签按钮中不再存在的图像。

<强>解决方案: 只需检查所有按钮,UIImage等,并确保您引用的图像实际存在于项目中。

答案 24 :(得分:0)

当我意外地将另一个图像集添加到资产目录文件时,我遇到了这个问题。我意识到错误之后将其重命名,但似乎没有用。

删除文件并再次添加它可以解决问题。

答案 25 :(得分:0)

我遇到了同样的问题,如果您的图片位于子文件夹中,则需要在复制资源时选择“为子文件夹创建组”选项。

答案 26 :(得分:0)

我也面临同样的问题,因为我在photoshop中编辑了图像并保存为psd格式,请确保在我的情况下以jpg或png格式保存你的photoshoped图像,这是问题希望它有所帮助谢谢

答案 27 :(得分:0)

JPEG格式确实在iOS中的发布模式下出现此错误。这可能发生在XCode优化发布代码时。尝试用JPEG替换图像,它将解决问题。

答案 28 :(得分:0)

我的麻烦不是上述情况。我将iconFolder放在Xcode项目的文件夹中。

导入时,选择“需要时复制项目”和“创建组”。

它对我有用。

答案 29 :(得分:0)

无论出于何种原因,将文件扩展名添加到图片标题的末尾就是为我解决的问题。

它正在引用&#34; canary04&#34;那就是我的标题图像,但是一旦我将图像标题更改为图像本身的标题(canary04.png),它就解决了。

答案 30 :(得分:0)

检查图像名称。然后检查是否可以在paint或photoshop中打开图像。如果图像是在photoshop中创建的,那么有时会出现与.png

的冲突

答案 31 :(得分:0)

尝试清理项目并确保info.plist与xx.co.mycompany.ipad.SplitView匹配