无法将图像从捆绑加载到故事板中

时间:2014-10-08 00:59:07

标签: ios objective-c iphone xcode bundle

我一直在研究将在多个应用程序中使用的库。该库还包括故事板和许多图像等资源。我最近使用Github上的iOS Framework教程将这个库变成了一个.framework。

当我第一次使用这个库时,它是一个应用程序的形式。当我完成大部分编码后,我把它变成了一个框架。但是,这就是我的问题开始的地方。

我能够呈现故事板(Engine.bundle/Platform.storyboardc),并且第一个屏幕显示哪个具有加载的背景图像。但是,一旦我进入这个故事板中的所有其他屏幕,这些屏幕上的图像就不会加载。奇怪的是,第一个屏幕图像通过故事板加载而无需在代码中设置它。故事板中的所有其他图像都不会加载,但它们都包含在与第一张图像相同的包中。

下一个屏幕之一包含不加载的信用卡图像。之后在屏幕上,更多信用卡图片无法加载。但是,一旦我通过.m文件设置图像,它们就会从包中加载并显示在屏幕上。然而,当我在每个其他屏幕上使用相同的代码而不显示各自的图像时,代码无法正常工作。这是我用来加载各自图片的代码:

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"Engine" withExtension:@"bundle"]];
NSString *filePath = [bundle pathForResource:@"front" ofType: @"png"];

backgroundImageView.image = [UIImage imageWithContentsOfFile:filePath];

每当显示未加载图像的屏幕时,会将以下内容记录到控制台:

Could not load the "visa.png" image referenced from a nib in the bundle with identifier "com.example.app"
Could not load the "mastercard.png" image referenced from a nib in the bundle with identifier "com.example.app"
... and so on and so forth for each image.

它甚至显示在第二张信用卡图像屏幕上......图像实际加载的屏幕。然而,它并没有显示在图像加载的第一个屏幕上。

我的包的结构如下:

Engine.bundle/
    Platform.storyboardc
    front.png
    visa.png
    amex.png
    ... so on and so forth.

我的问题是为什么不加载图片?为什么有些负载呢? front.png加载,只在一个屏幕上显示信用卡图像。然而,当我使用相同的代码将图像加载到其他屏幕时,代码无法正常工作。

很抱歉,如果这篇文章很长......那就是很多细节。我一直在努力解决这个问题。如果我没有解释正确的事情,请告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

好的,听起来您需要为Engine包设置包标识符。

使用类似“com.IAmSoAwesome.engine”

的内容

然后,而不是使用:

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"Engine" withExtension:@"bundle"]];

您可以使用:

NSBundle *bundle = [NSBundle bundleWithIdentifier: @"com.IAmSoAwesome.engine"];
相关问题