Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 4:多个目标、多个资源文件夹,具有相同名称的图像以与共享Xib一起使用?_Xcode_Resources_Xcode4_Uiimageview_Target - Fatal编程技术网

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

Xcode 4:多个目标、多个资源文件夹,具有相同名称的图像以与共享Xib一起使用?,xcode,resources,xcode4,uiimageview,target,Xcode,Resources,Xcode4,Uiimageview,Target,我制作了一个具有特定功能和特定图形外观的应用程序 例如,从Xib文件加载自定义tableview单元格,并将UIImageView作为背景图像,从resources组加载粉色图像(“customcell.png”) 现在,我复制了原始目标,创建了应用程序的蓝色版本。 此外,新目标正在使用其自己的Info.plist文件及其自己的包标识符 我希望Xib文件中的UIImageView使用相同的文件名(“customcell.png”),但如果构建了蓝色目标,则使用蓝色版本的customcell.pn

我制作了一个具有特定功能和特定图形外观的应用程序

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

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

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

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

因此,我创建了两个蓝色文件夹(分别称为“蓝色”和“粉色”),每个文件夹都与正确的目标关联。 我在“蓝色”文件夹中放了一个蓝色版本的“customcell.png”,在“粉色”文件夹中放了一个粉色版本的“customcell.png”

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

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

但是,当我构建到任何目标时,我会得到一个空的UIImageView和一个警告:

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

(或pinkversion)

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

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

我对我的应用程序的免费版和付费版使用不同的目标,这就是我分离不同图标文件的方式(很麻烦,因为它们必须有特定的名称)

我的文件系统如下所示:

资源

我同意

Icon.png

Icon@2x.png

等等

无图标

Icon.png

等等


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

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


我刚刚发布了一个可能对您有所帮助的消息。

您遇到的问题是,您试图将蓝色文件夹当作普通文件系统文件夹来使用。蓝色文件夹实际上只是IDE中组织的文件组,并不表示“隐藏”的文件夹层次结构

看看它是如何工作的,在Finder中右键单击一些图像查看它们,您会注意到,默认情况下,两个不同的blue group文件夹中的文件实际上位于同一目录中

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

  • 在Finder中,在文件所在的同一目录中创建一个新文件夹 找到AppDelegate,可能以您的目标命名
  • 将该目标的所有图像存储在该文件夹中
  • 右键单击左上窗格中项目的主组/文件夹,并使用“将文件添加到'XcodeProjectName'…”
  • 在出现的上方窗格中,查找并选择刚在文件系统上创建的文件夹
  • 由于文件已存在于指定的位置,因此可以保持目标框处于选中或未选中状态
  • 保持选中“为任何添加的文件夹创建组”以创建蓝色组文件夹
  • 确保你的目标被选中
  • 对每个目标重复这个过程


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

    我也遇到了同样的问题。
    通过重命名包含我希望显示的目标图像的文件夹,我成功地从一个目标传递到另一个目标,使其成为按字母顺序排列的第一个文件夹。

    您是否记得将它们分配给不同的目标?是的(我在创建时分配了蓝色文件夹。我似乎无法分配其中的单个文件)。。。看起来,IB无法真正访问那些蓝色文件夹。我设法在CustomeCell类中使用#IFDEF,指向相应的蓝色文件夹,但这意味着需要很多这样的#IFDEF,我希望通过IB来实现,而不是添加很多IFs。。。如果有人知道一种方法,我们将不胜感激。谢谢