【问题标题】:Xcode 4: Multiple Targets, Multiple Resources Folders with images of the same name to use with a shared Xib?Xcode 4:多个目标,多个资源文件夹具有相同名称的图像与共享 Xib 一起使用?
【发布时间】:2011-09-08 06:16:02
【问题描述】:

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

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

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

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

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

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

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

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

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

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

(或粉色版本)

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

【问题讨论】:

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

标签: xcode resources xcode4 uiimageview target


【解决方案1】:

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

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

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

  1. 在 Finder 中,在与 找到 AppDelegate,可能以您的目标命名。
  2. 将该目标的所有图像存储在该文件夹中。
  3. 右键单击左上窗格中项目的主组/文件夹,然后使用“将文件添加到 'XcodeProjectName'...”。
  4. 在出现的上方窗格中,找到并选择您刚刚在文件系统上创建的文件夹。
  5. 您可以选中或取消选中“目标”框,因为文件已存在于您指定的位置。
  6. 保持选中“为任何添加的文件夹创建组”以创建蓝色组文件夹。
  7. 确保您的目标已被选中。

只需对每个目标重复此过程。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      我的文件系统如下所示:

      资源

      图标付费

      图标.png

      图标@2x.png

      等等

      免费图标

      图标.png

      等等

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-09
          • 1970-01-01
          • 2021-11-30
          • 1970-01-01
          • 2023-03-27
          • 2011-07-07
          • 1970-01-01
          相关资源
          最近更新 更多