2011-09-08 16 views
8

He creado una aplicación con cierta funcionalidad y cierto aspecto gráfico.XCode 4: Múltiples destinos, múltiples recursos Carpetas con imágenes del mismo nombre para usar con un Xib compartido?

Por ejemplo, una celda de vista de tabla personalizada se carga desde un archivo Xib y tiene una UIImageView como imagen de fondo, cargada con una imagen rosa ("customcell.png") del grupo de recursos.

Ahora, he duplicado el objetivo original para crear una versión azul de la aplicación. Además, el nuevo objetivo está utilizando su propio archivo Info.plist con su propio identificador de paquete.

Quería que el UIImageView dentro del archivo Xib usara el mismo nombre de archivo ("customcell.png"), pero tome una versión azul de customcell.png si se creó el Target azul.

Sé que no puede tener archivos con el mismo nombre en un proyecto, incluso si lo coloca en un grupo (carpeta amarilla), ya que es solo una carpeta lógica.

Así que creé 2 carpetas azules (llamadas "azul" y "rosa"), cada una asociada con el objetivo correcto. He puesto una versión azul de "customcell.png" en la carpeta "azul", y una versión rosa de "customcell.png" en la carpeta "rosa".

He eliminado el original "customcell.png" del proyecto, dejando solo las 2 copias que están en las nuevas carpetas.

En Interface Builder, el UIImageView se ha quedado en blanco (desde que eliminé el archivo de imagen original), así que seleccioné "customcell.png" nuevamente en la lista desplegable. Mostraba solo 1 archivo de ese nombre (no 2), y es el azul (no sé por qué).

Sin embargo, cuando construyo a cualquiera de los objetivos, me sale un UIImageView vacía y una advertencia:

No puede mostrarse la imagen "customcell.png" hace referencia a partir de una semilla en el paquete con el identificador " com.myapp.blueversion"

(o pinkversion)

Así que, básicamente, mi pregunta es, cómo puedo utilizar diferentes imágenes con el mismo nombre, asociado a diferentes objetivos, pero teniendo 1 archivo Xib que los carga apropiadamente?

¡Muchas gracias!

+0

¿Recordó asignarlos a sus diferentes objetivos? –

+0

Sí (asigné las carpetas azules en la creación. Parece que no puedo asignar archivos individuales dentro) ... Al parecer, IB realmente no puede acceder a esas carpetas azules. Logré hacerlo con #IFDEF dentro de la clase CustomeCell, apuntando a la carpeta azul apropiada, pero eso significaría que se necesitarían muchos de estos #IFDEF, y esperaba una forma de hacerlo a través de IB en lugar de agregar muchos SI ... Si alguien sabe de alguna manera, se lo agradecería. Gracias. –

Respuesta

2

El problema que tienes es que estás tratando de usar las carpetas azules como si fueran carpetas normales del sistema de archivos. Las carpetas azules son en realidad solo grupos de archivos para organización en el IDE y no representan una jerarquía de carpetas 'bajo el capó'.

Observe cómo funciona haciendo clic con el botón derecho en algunas de las imágenes para verlas en el Finder y verá que los archivos en 2 carpetas de grupos azules diferentes están actualmente en el mismo directorio por defecto.

Cómo utilizar una xib referencia a las mismas imágenes con nombre para múltiples objetivos:

  1. En Finder, cree una nueva carpeta en el mismo directorio donde se encuentra el AppDelegate, probablemente, dándole el nombre de su destino .
  2. Guarde todas las imágenes para ese destino en esa carpeta.
  3. Haga clic con el botón derecho en el grupo/carpeta principal del proyecto en el panel superior izquierdo y use "Agregar archivos a 'XcodeProjectName' ...".
  4. En el panel superior que aparece, busque y seleccione la carpeta que acaba de crear en el sistema de archivos.
  5. Puede dejar marcado o desmarcado el cuadro de Destino, ya que los archivos ya existen en la ubicación que especificó.
  6. Mantener 'Crear grupos para cualquier carpeta agregada' seleccionado para crear una carpeta de grupo azul.
  7. Asegúrate de que tu objetivo esté marcado.

Simplemente repita este proceso para cada objetivo.

Cuando vea el xib en Xcode, siempre mostrará una versión de la imagen, pero será correcta cuando ejecute la aplicación.

0

He tenido problemas con las carpetas azules, ¡no estoy seguro de cómo se supone que funcionan!

utilizo objetivos independientes para una versión gratuita y de pago de mi aplicación, y así es como me separo los diferentes archivos de iconos (problemático debido a que tienen que tener ciertos nombres)

Mi sistema de archivos tiene el siguiente aspecto:

Recursos

IconsPaid

Icon.png

Icono @ 2x.png

Etc.

IconsFree

Icon.png

Etc.

I A continuación, arrastre las carpetas IconsPaid y IconsFree a XCode y asignar los contenidos a los objetivos pertinentes

2

Puede probar dos copias de .xib, cada una miembro de un objetivo diferente. .m y .h pueden ser miembros de ambos objetivos, si lo desea (por lo que solo se duplica .xib).

Acabo de publicar un similiar question que podría ayudarlo con esto.

Cuestiones relacionadas