2011-09-08 12 views
8

Ho creato un'app con una certa funzionalità e un determinato aspetto grafico.XCode 4: più destinazioni, più risorse Cartelle con immagini con lo stesso nome da utilizzare con uno Xib condiviso?

Ad esempio, una cella tableview personalizzata viene caricata da un file Xib e presenta UIImageView come immagine di sfondo, caricata con un'immagine Pink ("customcell.png") dal gruppo di risorse.

Ora, ho duplicato il Target originale per creare una versione blu dell'app. Inoltre, la nuova destinazione utilizza il proprio file Info.plist con il proprio identificativo del gruppo.

Volevo che UIImageView all'interno del file Xib usasse lo stesso nome file ("customcell.png"), ma prendi la versione blu di customcell.png se è stato creato il Target blu.

So che non è possibile avere file con lo stesso nome in un progetto, anche se lo si inserisce in un gruppo (cartella gialla), poiché si tratta solo di una cartella logica.

Quindi ho creato 2 cartelle blu (denominate "blu" e "rosa"), ciascuna associata all'obiettivo corretto. Ho messo una versione blu di "customcell.png" nella cartella "blu", e una versione rosa di "customcell.png" nella cartella "rosa".

Ho eliminato l'originale "customcell.png" dal progetto, lasciando solo le 2 copie che si trovano nelle nuove cartelle.

In Interface Builder, UIImageView è diventato vuoto (poiché ho eliminato il file immagine originale), quindi ho selezionato "customcell.png" di nuovo dall'elenco a discesa. Ha mostrato solo 1 file di quel nome (non 2), ed è quello blu (non so perché).

Tuttavia, quando costruire qualsiasi obiettivi, ottengo un UIImageView vuoto e un avvertimento:

Impossibile caricare l'immagine "customcell.png" si fa riferimento da un pennino in bundle con identificatore " com.myapp.blueversion"

(o pinkversion)

Quindi, in sostanza la mia domanda è, come posso utilizzare immagini diverse con lo stesso nome, associato a diversi target, ma con 1 file Xib che li carica in modo appropriato?

Grazie mille!

+0

Ti sei ricordato di assegnarli ai loro diversi obiettivi? –

+0

Sì (ho assegnato le cartelle blu alla creazione, non riesco ad assegnare singoli file all'interno) ... Come sembra, IB non può davvero arrivare a quelle cartelle blu. Sono riuscito a farlo con #IFDEF all'interno della classe CustomeCell, puntando alla cartella blu appropriata, ma questo significherebbe che molti #IFDEF sono necessari e speravo in un modo per farlo tramite IB invece di aggiungere un sacco di IFs ... Se qualcuno conosce un modo, sarebbe apprezzato. Grazie. –

risposta

2

Il problema che si sta verificando è che si sta tentando di utilizzare le cartelle blu come se fossero normali cartelle del file system. Le cartelle blu sono in realtà solo gruppi di file per l'organizzazione nell'IDE e non rappresentano una gerarchia di cartelle "sotto il cofano".

Dai un'occhiata a come funziona facendo clic con il pulsante destro del mouse su alcune delle immagini per visualizzarle in Finder e noterai che i file in 2 diverse cartelle di gruppi blu si trovano effettivamente nella stessa directory per impostazione predefinita.

Come usare uno xib riferimento le stesse immagini di nome per più obiettivi:

  1. Nel Finder, creare una nuova cartella nella stessa directory in cui si trova la AppDelegate, probabilmente chiamandolo dopo il vostro target .
  2. Salva tutte le immagini per quel target in quella cartella.
  3. Fare clic con il pulsante destro del mouse sul gruppo/cartella principale del progetto nel riquadro in alto a sinistra e utilizzare "Aggiungi file a 'XcodeProjectName' ...".
  4. Nel riquadro superiore visualizzato, trovare e selezionare la cartella appena creata nel file system.
  5. È possibile lasciare selezionata o deselezionata la casella Destinazione poiché i file esistono già nella posizione specificata.
  6. Mantieni "Crea gruppi per tutte le cartelle aggiunte" selezionato per creare cartelle di gruppo blu.
  7. Assicurarsi che il bersaglio sia selezionato.

Basta ripetere questo processo per ciascun obiettivo.

Quando si visualizza lo xib in Xcode, verrà sempre mostrata una versione dell'immagine, ma sarà corretta quando si esegue l'app.

0

Ho avuto problemi con le cartelle blu, non sono sicuro di come dovrebbero funzionare!

posso utilizzare obiettivi distinti per una versione gratuita ea pagamento di mia app, e questo è come mi separare le diverse file di icone (fastidioso perché avere certi nomi)

Il mio sistema di file si presenta così:

Risorse

IconsPaid

Icon.png

Icona @ 2x.png

Ecc

IconsFree

Icon.png

Ecc

ho quindi trascinare le cartelle IconsPaid e IconsFree a XCode e assegnare il contenuto agli obiettivi rilevanti

2

Si potrebbe provare due copie di .xib, ciascuna un membro di destinazione diversa. .m e .h possono essere membri di entrambi i target, se lo si desidera (quindi solo .xib è duplicato).

Ho appena pubblicato un similiar question che potrebbe aiutarti con questo.