Xcode 4: несколько целей, несколько ресурсов Папки с изображениями с одинаковыми именами для использования с общей Xib? - PullRequest
9 голосов
/ 08 сентября 2011

Я создал приложение с определенной функциональностью и определенным графическим оформлением.

Например, пользовательская ячейка табличного представления загружается из файла Xib и имеет UIImageView в качестве фонового изображения, загружаемого с помощью Pink.image ("customcell.png") из группы ресурсов.

Теперь я продублировал исходную цель, чтобы создать синюю версию приложения.Кроме того, новая цель использует собственный файл Info.plist с собственным идентификатором пакета.

Я хотел, чтобы UIImageView внутри Xib-файла использовал то же имя файла ("customcell.png"), но взялсиняя версия customcell.png, если синяя Цель была построена.

Я знаю, что в проекте не может быть файлов с одинаковым именем, даже если вы поместите их в группу (желтая папка), так как этопросто логическая папка.

Итак, я создал 2 синие папки (называемые «синей» и «розовой»), каждая из которых связана с правильной целью.Я поместил синюю версию "customcell.png" в папку "blue" и розовую версию "customcell.png" в папку "pink".

Я удалил исходную "customcell".png "из проекта, оставляя только 2 копии в новых папках.

В Интерфейсном Разработчике UIImageView стал пустым (так как я удалил исходный файл изображения), поэтому я выбрал" customcell.png"снова из выпадающего списка.Он показал только 1 файл с таким именем (не 2), и это синий (не знаю почему).

Однако, когда я строю для любой из целей, я получаю пустой UIImageView ипредупреждение:

Не удалось загрузить изображение «customcell.png», на которое ссылается перо в комплекте с идентификатором «com.myapp.blueversion»

(или pinkversion)

Итак, в основном мой вопрос, как я могу использовать разные изображения с одинаковыми именами, связанные с разными целями, но имея 1 файл Xib, который загружает их соответствующим образом?

Ответы [ 4 ]

3 голосов
/ 01 июля 2013

Проблема в том, что вы пытаетесь использовать синие папки, как если бы они были обычными папками файловой системы. Синие папки на самом деле являются просто группами файлов для организации в IDE и не представляют иерархию папок «под капотом».

Посмотрите, как это работает, щелкнув правой кнопкой мыши по некоторым изображениям, чтобы просмотреть их в Finder, и вы заметите, что файлы в 2 разных папках синей группы фактически находятся в одном каталоге по умолчанию.

Как использовать один xib, ссылающийся на одноименные изображения для нескольких целей:

  1. В Finder создайте новую папку в том же каталоге, где находится AppDelegate найден, возможно, назвав его после вашей цели.
  2. Храните все ваши изображения для этой цели в этой папке.
  3. Щелкните правой кнопкой мыши основную группу / папку проекта в верхней левой панели и используйте «Добавить файлы в« XcodeProjectName »…».
  4. В появившейся верхней панели найдите и выберите папку, которую вы только что создали в файловой системе.
  5. Вы можете оставить флажок Пункт назначения отмеченным или не отмеченным, поскольку файлы уже существуют в указанном вами месте.
  6. Сохраняйте «Создать группы для любых добавленных папок» выбранными для создания папок синей группы.
  7. Убедитесь, что ваша цель отмечена.

Просто повторите этот процесс для каждой цели.

Когда вы просматриваете XIB в XCode, он всегда показывает одну версию изображения, но это будет правильно при запуске приложения.

2 голосов
/ 16 января 2012

Вы можете попробовать две копии .xib, каждая из которых имеет свою цель..m и .h могут быть членами обеих целей, если хотите (поэтому дублируется только .xib).

Я только что опубликовал похожий вопрос , который может помочь вам в этом.

0 голосов
/ 22 июня 2019

У меня была такая же проблема.Мне удалось перейти от одной цели к другой, переименовав папку, содержащую изображения цели, которую я хотел показать, чтобы она стала первой в алфавитном порядке.

0 голосов
/ 08 сентября 2011

У меня были проблемы с синими папками, я не уверен, как они должны работать!

Я использую отдельные цели для бесплатной и платной версии моего приложения, и вот как яразделить различные файлы значков (хлопотно, потому что они должны иметь определенные имена)

Моя файловая система выглядит следующим образом:

Ресурсы

IconsPaid

Icon.png

Icon@2x.png

И т.д.

IconsFree

Icon.png

И т.д.

Затем я перетаскиваю папки IconsPaid и IconsFree в XCode и назначаю содержимое соответствующим целям

...