Iphone 删除图像文件并将其重新添加到我的iOS4应用程序包时出现问题

Iphone 删除图像文件并将其重新添加到我的iOS4应用程序包时出现问题,iphone,xcode,Iphone,Xcode,我的问题应该很简单,令人难以置信。当我更改存储在我的应用程序包中的图像文件的外观(在PhotoShop中)时。我用新图像替换捆绑包中的旧图像的方法如下: 1) 从应用程序包中删除旧图像(选择同时移动到垃圾箱) 2) 将新图像拖动到xcode中的“我的文件”层次结构中(选择复制到应用程序目录) 当我这样做时,无论我做什么,应用程序都找不到图像。新图像与旧图像具有相同的名称,但任何图像加载方法(ImageName、imageWithContentsOfFile、nibs)都不起作用。(虽然我相信NI

我的问题应该很简单,令人难以置信。当我更改存储在我的应用程序包中的图像文件的外观(在PhotoShop中)时。我用新图像替换捆绑包中的旧图像的方法如下:

1) 从应用程序包中删除旧图像(选择同时移动到垃圾箱) 2) 将新图像拖动到xcode中的“我的文件”层次结构中(选择复制到应用程序目录)

当我这样做时,无论我做什么,应用程序都找不到图像。新图像与旧图像具有相同的名称,但任何图像加载方法(ImageName、imageWithContentsOfFile、nibs)都不起作用。(虽然我相信NIB也会加载imageNamed,但我不确定)

这里有我遗漏的东西吗?我觉得这应该是一个相对简单的过程,但我有各种各样的麻烦。我还确保删除目标设备上的应用程序,并在更改图像文件后重建和运行之前清理所有目标,以防万一

任何帮助都将不胜感激


谢谢

您是否将图像放在自定义子文件夹中?如果您只是将图像拖到Xcode项目树中,如果您复制它们,图像将被复制到项目目录的根目录,而不是您可能已设置的“图像”或其他文件夹


请注意,您可以右键单击捆绑包中的图像,选择“获取信息…”并重置其位置,前提是该图像已被移动或复制到您意想不到的文件夹中。

您的问题可能是该图像未复制到目标。在“xcode组和文件”窗格中,为目标定义节点,展开应用程序目标,您将看到复制捆绑资源展开它,您将看到将应用程序部署到sim/设备时复制到默认资源捆绑的所有文件。只有在那里找到的资源才可用于您的应用程序。如果你在那里看不到你的图像,你可以把它拖到那里,一切都会正常的

现在,为了理解为什么会发生这种情况,我们需要查看向xcode添加文件的不同选项

当您向xcode添加文件时,会出现一个对话框,其中包含一些有趣的、有时会被忽略的选项

第一个-文件应该复制到项目文件夹,还是只指向文件的原始位置。最安全的方法是始终将文件复制到项目路径。但是,对于图像(例如您的情况),我的做法不同。我为每个应用程序维护一个单独的图形文件夹,我在那里保存图像(包括源文件和最终png)。添加图像时,我不会将其复制到项目文件夹中,而只是将xcode指向其位置。这样我就可以在photoshop中编辑图像,进行重建,更新后的图像就会显示在手机上。重要的是要了解项目中包含的文件的目录结构几乎没有任何意义,目标的复制捆绑包资源中显示的文件将始终复制到手机上的单个(扁平)捆绑包/“目录”。唯一的例外是,如果您实际将目录添加到xcode(我个人建议不要这样做)

添加文件时的第二个选项是将文件添加到哪个目标。这是底部带有复选框的列表,如果在添加图像时未选中应用程序目标,则该文件将不包括在目标复制捆绑资源中,并且不可用于手机


一些注意事项-当使用对其他位置的文件的引用时,该位置相对于项目的路径,因此最好将项目根目录下目录中的所有文件都保留下来。通过这种方式,您仍然可以将整个项目复制到其他位置,并且仍然有效。

上面的好建议:我想我会添加更多内容,以便将来搜索此主题:

我在项目中添加和删除图像,如上所示:

  • 从应用程序包中删除旧图像(选择同时移动到垃圾箱)
  • 将新图像拖动到xcode中的“我的文件”层次结构中(选择复制到应用程序目录)
  • 但是,当我尝试将同名的新图像拖动到xcode中的文件层次结构时,我得到一个错误,这是不允许的

    事实证明,当我删除旧映像时,Xcode将其从项目文件层次结构中删除,但实际文件并未从项目的根目录中删除


    我通过从项目的根目录中删除映像并再次添加映像解决了问题

    感谢您的回复,我在最初的问题中忘了提到它,但我确实确保了图像文件位于我的目标下的“Copy bundle resources”文件夹中。你的文件管理方法听起来比我的更有效,更“用户友好”,所以我将尝试一下,看看是否能解决我遇到的一些问题。还没有答案。我在iOS6和xcode4.5上仍然存在这个问题。这显然是XCode中的一个bug。我正在使用一个名为IExplorer的工具,它可以在设备上打开应用程序包。有了它,我可以看到,即使在删除测试应用程序、重新启动手机以及重新启动Mac和XCode之后,我从项目中删除的文件(不显示目标复制步骤)也会重新出现在捆绑包中。