1

我在界面生成器中设置了按钮背景,但没有显示出来,所以我以编程方式设置它。所有(除了一个按钮......为什么?)都显示在模拟器上,但从不显示在设备上。

我得到这个输出:

Could not load the "gray_button.png" image referenced from a nib in the bundle with identifier "com.example.ios"

这是代码:

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self.getMyTripButton setBackgroundImage:[UIImage imageWithContentsOfFile:
                                          [[self getFullPathname] stringByAppendingPathComponent:@"images/gray_button.png"]]
                                forState:UIControlStateNormal];
    [self.popupButton setBackgroundImage:[UIImage imageWithContentsOfFile:
                                      [[self getFullPathname] stringByAppendingPathComponent:@"images/gray_button.png"]]
                            forState:UIControlStateNormal];


    [self.viewOurPackages reloadData];
}

我也尝试过替换imageWithContentsOfFileimageNamed两者都产生相同的结果。

我已经在我的项目 > 目标 > 构建阶段 > 复制捆绑资源中添加了图像目录,但我认为这就是一切开始出错的地方,我不知道为什么。可能是因为它是一个目录?

我想指出,我已经两次和三次检查它不是大写/区分大小写的问题。

更新:我已经解决了一个按钮不显示的问题。看起来真正的问题是图像显示在 iOS6 上而不是在 iOS5 上。

4

3 回答 3

2

对我有用的是以下三件事之一(或组合):

  1. 确保您的图像文件格式正确。有时 png 文件需要一点强制。(我认为这特别是我的问题)
  2. 确保您的按钮是 Interface Builder 中的 Custom 类型或UIButtonTypeCustom.
  3. 如果您在 Interface Builder 中设置图像并且它仍然没有显示,请在代码中使用[button setBackgroundImage:image forState:UIControlStateNormal](或[button setImage:image forState:UIControlStateNormal]取决于您需要哪一个)显式设置它。
于 2012-12-05T20:23:22.233 回答
1

如果要将文件夹添加到复制包中,则不gray_button.png应将文件引用为 ,而应从代码或 xib 中引用文件 您还必须在名称中包含目录,例如directory/gray_button.png

于 2012-11-07T21:25:18.927 回答
0

斯蒂芬,

如果您用于@synthesize中的按钮.h file,那么会自动创建 getter 和 setter。因此(这是一个长镜头,只是一个想法)有这个名字getMyTripButton可能会以某种方式混淆 Xcode。尝试重命名变量?

至于图像未加载...对于其中一个按钮而不是另一个...常见问题解答?这是唯一gray_button.png被调用的地方吗?(例如,您没有在其他地方修改该按钮,可能会告诉它再次使用该图像)。您是否尝试过将它与使用它的 nib 放在同一目录中?你确定getMyTripButton从笔尖正确地绑定到代码吗?

我现在能想到的最后一件事:你说

我在界面生成器中设置了按钮背景,但没有显示出来,所以我以编程方式设置它。所有(除了一个按钮......为什么?)都显示在模拟器上,但从不显示在设备上

popupButton在 nib/interface builder 中也设置了背景图像吗?如果您已经在此处设置并在此处再次设置,则可能根本没有在代码中进行设置,而只是使用了界面生成器中的内容,这可以解释为什么getMyTripButton可能无法显示/显示背景图像。

如果我想到任何其他可能导致问题的东西,我会编辑这篇文章。祝你好运,坚持下去。

于 2012-11-08T00:08:52.883 回答