XCode 4:多个目标,多个资源具有相同名称的图像的文件夹与共享Xib一起使用?

时间:2011-09-08 06:16:02

标签: xcode resources xcode4 uiimageview target

我制作了一款具有特定功能和特定图形效果的应用。

例如,从Xib文件加载自定义tableview单元格,并将UIImageView作为背景图像加载,并从资源组加载粉红色图像(“customcell.png”)。

现在,我已复制原始Target以创建应用程序的蓝色版本。 此外,新Target正在使用自己的Info.plist文件及其自己的包标识符。

我希望Xib文件中的UIImageView使用相同的文件名(“customcell.png”),但如果构建了蓝色Target,则需要使用蓝色版本的customcell.png。

我知道你不能在项目中拥有同名文件,即使你把它放在一个组(黄色文件夹)中,因为那只是一个逻辑文件夹。

所以我创建了2个蓝色文件夹(称为“蓝色”和“粉红色”),每个文件夹都与正确的目标相关联。 我在“blue”文件夹中添加了蓝色版本的“customcell.png”,在“粉红色”文件夹中添加了粉红色版本的“customcell.png”。

我已从项目中删除了原始的“customcell.png”,只留下了新文件夹中的2个副本。

在Interface Builder中,UIImageView变为空白(因为我删除了原始图像文件),所以我从下拉列表中再次选择了“customcell.png”。 它只显示了该名称的1个文件(不是2个),而且它是蓝色的(不知道为什么)。

然而,当我构建到任何目标时,我得到一个空的UIImageView并发出警告:

  

无法加载标识符为“com.myapp.blueversion”的包中nib引用的“customcell.png”图像

(或pinkversion)

所以,基本上我的问题是, 如何使用相同名称的不同图像,与不同的目标相关联, 但是有1个Xib文件可以正确加载它们吗?

非常感谢!

4 个答案:

答案 0 :(得分:3)

您遇到的问题是您尝试使用蓝色文件夹,就好像它们是普通的文件系统文件夹一样。蓝色文件夹实际上只是用于在IDE中组织的文件组,并且不代表文件夹层次结构'引擎盖下。

通过右键单击某些图像来查看它是如何工作的,以便在Finder中查看它们,并且您会注意到默认情况下,2个不同蓝色组文件夹中的文件实际上位于同一目录中。

如何使用一个xib为多个目标引用相同的命名图像:

  1. 在Finder中,在同一目录中创建一个新文件夹 找到AppDelegate,可能是在你的目标之后命名它。
  2. 将该目标的所有图像存储在该文件夹中。
  3. 右键单击左上方窗格中项目的主要组/文件夹,然后使用"将文件添加到' XcodeProjectName' ..."。
  4. 在显示的上部窗格中,找到并选择刚刚在文件系统上创建的文件夹。
  5. 您可以选中或取消选中“目的地”框,因为文件已存在于您指定的位置。
  6. 保留'为任何添加的文件夹创建群组'选择创建蓝色组文件夹。
  7. 确保检查目标。
  8. 只需为每个目标重复此过程。

    当您在Xcode中查看xib时,它将始终显示图像的一个版本,但在运行应用程序时它将是正确的。

答案 1 :(得分:2)

您可以尝试两个.xib副本,每个副本都是不同目标的成员。 如果你愿意,.m和.h可以是两个目标的成员(因此只有.xib是重复的。)

我刚刚发布了similiar question,可能会对此有所帮助。

答案 2 :(得分:0)

我的蓝色文件夹有问题,我不确定它们应该如何工作!

我为我的应用程序的免费和付费版本使用单独的目标,这就是我如何分隔不同的图标文件(麻烦,因为他们必须有某些名称)

我的文件系统如下所示:

  

资源

     

IconsPaid

     

的icon.png

     

Icon@2x.png

     

     

IconsFree

     

的icon.png

     

然后我将IconsPaid和IconsFree文件夹拖到XCode并将内容分配给相关目标

答案 3 :(得分:0)

我遇到了同样的问题。 通过重命名包含要显示的目标图像的文件夹,我设法从一个目标传递到另一个目标,从而使其按字母顺序成为第一个。