TheLearner
TheLearner

Reputation: 19507

Could not load the image referenced from a nib in the bundle running on device

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

I only get the error when running on the device. There are no problems running in simulator.

I am using the image directly in interface builder with an UIImageView.

EDIT: I have added a different new image to a different nib and that works no problems.

Anyone have any ideas?

Upvotes: 62

Views: 76099

Answers (30)

Jayprakash Dubey
Jayprakash Dubey

Reputation: 36447

Solution 1 :

In my case I had copied folder containing images and even checked "Destination : copy items if needed". However it has not been added to "Copy Bundle Resources" of "Build Phases".

You can add images as follows :

  1. Select Targets
  2. Select "Build Phases" tab
  3. Select "Copy Bundle Resources"
  4. Click on "+" (Plus) button just beneath it
  5. Locate images and add it

Screenshot for solution 1

Solution 2 :

Delete images by selecting "Move to thrash". Again add images in your project with "Destination : copy items if needed" checked.

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

Upvotes: 3

Yingpei Zeng
Yingpei Zeng

Reputation: 525

I also met the problem that jpeg files cannot be loaded successfully, however I solved it without changing them to png format: for example, if you have an image named "bg.jpg", don't use "bg" in storyboard (this name is listed in the dropdown selection list), instead you should explicitly write "bg.jpg" in the name field.

For programming based image view, I guess using .jpg extension like [UIImage imageNamed:@"xx.jpg"] should also work (I did't test though).

Upvotes: 1

ersentekin
ersentekin

Reputation: 654

I've encountered this issue when I was trying to set image of an imageView on Interface Builder (.xib) file.

(I was using Image Assets)

I've had 2 images with theImage.jpeg and [email protected] Interface Builder could be able to display true images at compile time with these jpg / jpeg formats. But I've got this error in the runtime:

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

Then I changed my image files formats to .png and it worked!

Try this solution too if you have different formats for images you try to set.

Upvotes: 1

Felecia Genet
Felecia Genet

Reputation: 367

For whatever reason, adding the file extension to the end of the image title is what solved it for me.

it was referencing "canary04" bc thats what I titled the image, but once I changed the image title to the title of the image itself (canary04.png) it was solved.

Upvotes: 0

Alvin George
Alvin George

Reputation: 14296

My trouble was none of the above. I put the iconFolder in Xcode project's folder.

When I imported it, selected "Copy items if needed" and "Create Groups".

It worked for me.

Upvotes: 0

gunjot singh
gunjot singh

Reputation: 2598

JPEG format does gives this error in release mode in iOS. This might happens while, XCode optimizes the code for release. Try replacing the image with JPEG and it will solve the problem.

Upvotes: 0

Mehul D
Mehul D

Reputation: 140

i also faced same problem because i edited image in photoshop and saved as a psd format make sure you save your photoshoped images in jpg or png format in my case that was the problem hope it helps thanks

Upvotes: 0

sports
sports

Reputation: 8147

I was getting this error too. I will describe my scenario:

I have a subdirectory "img" which has some png's in it.
One of these png is "ic_timeprogress_000.png"

In the storyboard (visual designer) I had an imageView and the image was set to "ic_timeprogress_000.png" (not programatically). The designer showed the imageView correctly:

imageView in subdirectory

Although when running the app, the error was thrown.

So in the storyboard I changed (I insist: not programatically) from "ic_timeprogress_000.png" to "img/ic_timeprogress_000.png", which lead to not showing correctly the image in the designer but showing correctly when running (no error)

imageView in subdirectory

Although I alter imageView.image programatically, so this "initial image" isn't ever used.

Upvotes: 2

Navid Rezaei
Navid Rezaei

Reputation: 1041

In my case, the issue was the image format. They were 'jpg' files, while Xcode was expecting 'png' files. Changing the file format fixed the issue.

Upvotes: 0

sbastidasr
sbastidasr

Reputation: 637

  1. Delete the blue folder where the image is.
  2. Import again and select "Copy items if needed".
  3. Select "Create Groups" NOT folders

Upvotes: 8

carlos16196
carlos16196

Reputation: 706

what worked for me is making sure the file's owner in interface builder has a "view" outlet.

From IB, select file's owner from "Placeholders", then in "Connections Inspector" make sure the view outlet in connected to the main view of current XIB.

This happened because i removed the main view at some point and forgot to reconnect my new view.

Hope it helps somebody else.

Upvotes: 0

Enrico Susatyo
Enrico Susatyo

Reputation: 19790

I got this problem when I accidentally added another Image set to Asset Catalog file. I renamed it after I realised the mistake, but it doesn't seem to work.

Removing the file and adding it again solves the problem.

Upvotes: 0

TheRealRonDez
TheRealRonDez

Reputation: 2807

2015 - Still having this problem. I was referencing an image that no longer existed in one of tabbed buttons.

Solution: Simply inspect all your buttons, UIImage etc. and make sure that the image that you are referencing actually exists within your project.

Upvotes: 0

backslash112
backslash112

Reputation: 2230

Maybe after you set the button's image, you changed the image's name.

Upvotes: 0

Reefwing
Reefwing

Reputation: 2272

I had a different problem in iOS 8. In my case the problem was that I selected Device Specific for the image set, and then selected iPad. Changing this back to Universal fixed the problem.

This setting can be found in the images.xcassets file, in the third column show the attributes inspector for the image set.

In this case the images wont be displayed in the storyboard or NIB file even if you have added them to images.xcassets. They also wont show in the simulator or device.

Upvotes: 1

Pedro Borges
Pedro Borges

Reputation: 1719

Tried each and every answer here and nothing, so here's another glitch, your icon name cannot have dots (.) because if it does (and Xcode allows you to do that!) while the icons show well in storyboard, they won't load either in the simulator or the device.

Upvotes: 0

Yedy
Yedy

Reputation: 2126

In my case all images where displaying fine on devices with >iOS 7 but not with iOS 6.1. The solution was that iOS7 is case sensitive but iOS 6.1 wasn't for me. I had images named like "myImageName" and also named "myimagename" witch leads my old iPhone 3 to be unable to display these images.
So renaming them solved it.

Upvotes: 0

Noah Dyer
Noah Dyer

Reputation: 407

In my case, it was because Photoshop wasn't saving my files correctly. In the file save dialog I was clicking on myfile.png in an attempt to overwrite that file, and it was saving the file with a png extension, but in photoshop format.

I had to make sure to actually change the file format to PNG before clicking on the file I wanted to overwrite, thus saving in actual png file, thus being readable by iOS. Interestingly, interface builder showed my psd-as-png files just fine.

More generically, make sure your file is, in fact, in the format you think it is and that iOS is therefore expecting.

Upvotes: 3

Tom
Tom

Reputation: 4652

You can do this to check it from your storyboard, or nib. Open it as Source Code:

enter image description here

Then "Find" the image name in it, see if it exists but already invalid in your project, probably you have deleted or changed its name, and now it doesn't seem valid.

enter image description here

Upvotes: 5

Mazyod
Mazyod

Reputation: 22559

I have this problem with Xcode 5, and it seems "Combine high resolution artwork" is the culprit. I opened the app bundle, and all the images were *.tiff, which caused the image to "not be found" :S

FIX:

Open project settings, and search in the top for "combine". Change that setting to NO.

enter image description here

For some reason, everyone is missing this essential fix.

Upvotes: 0

Mick
Mick

Reputation: 31919

The easy way

1 Simply do a grep in command shell to find the string of the referenced image:

grep -R 'canary04.png' YourMainDirectoryFolder/*

2 It will give you (for example) an output like this:

YourProject/en.lproj/YourViewController.xib: 

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

3 You now know which nib file and which element it is. Just go in the file and remove the reference.

Upvotes: 14

Mann
Mann

Reputation: 5507

Save image as PNG-24. It works for me

Upvotes: 5

Arun
Arun

Reputation: 163

Check your image name. If it contains some spaces then image will show while running in simulator but not in the device. While running it checks Case sensitive name etc.

Upvotes: 1

Ahmad
Ahmad

Reputation: 146

I had the same issue. try to

  • clean
  • build and run

it worked with me

Upvotes: 3

Beau
Beau

Reputation: 41

I had this problem when I upgraded to Xcode 4.4.1. I found that although I had deleted the images (and corresponding buttons, etc.) in the storyboards, there was still mention of them in my storyboard files (in a tabBarItems field). I manually commented them out (), Product -> Clean, and I didn't get the errors any more.

I knew there must be bogus references in the storyboard as I had previously deleted my TabBar and the current App worked without problems, just with annoying messages in the console.

Upvotes: 4

tonisives
tonisives

Reputation: 2510

My problem was that I saved the image as .jpg and changed the name to .png (was still in jpg format). It worked with simulator

Upvotes: 1

Veeru
Veeru

Reputation: 4936

I had the same issue, if your images are inside sub-folders, you need to choose "Create groups for subfolders" Option when you copy the resources.

Upvotes: 0

Peter Theill
Peter Theill

Reputation: 3220

It might not be added to your Target and in XCode 4 you can do it like this:

  • In your Project View, click your project name
  • Select your target and select "Build Phases" tab
  • Drag your image file into your "Copy Bundle Resources" section

That fixed it for me.

Upvotes: 129

MystikSpiral
MystikSpiral

Reputation: 5028

Have you included the file in the target? Right-click on your Target in Xcode, select Get Info and choose the "Targets" group along the top. Make sure your intended target(s) are checked.

Good Luck.

EDIT: The text above should have read Right-click the file (canary04.png) in Xcocde and select Get Info...

Sorry for the typo.

Upvotes: 4

John Parker
John Parker

Reputation: 54425

The filesystem on iOS devices is case sensitive, so it's quite possibly a case issue. (Mac OS X is generally case in-sensitive, hence you've not seen this issue in the simulator.)

As such, check that you're using the same case in the code as the filename itself.

Upvotes: 28

Related Questions