2010-12-13 15 views
8

Sto provando a costruire un controller di visualizzazione che può essere "scorticato" - cioè, con più aspetti o personalità ma che utilizza un singolo controller. Ogni vista avrà gli stessi pulsanti, ecc., Ma vorrei poter caricare ogni file di pennino (skin) nello stesso controller di visualizzazione. Posso creare più file pennino, ma non vedo come collegare i pulsanti e le azioni. Posso specificare lo stesso "proprietario del file" per più file di pennini? (COME?).Controller Single View con più pennini?

Questo può essere fatto?

risposta

8

Questo è totalmente possibile. Basta creare nuovi file pennino e in Interface Builder impostare il proprietario del file sulla classe. Puoi quindi collegare le tue prese e azioni come prima. Dal codice basta specificare il file di pennino corretto nel metodo initWithNibName :.

Se le uniche modifiche sono di tipo cosmetico, potrebbe essere meglio fare solo quelle modifiche nel codice, ma il metodo proposto funzionerà correttamente.

+0

Grazie! (domanda di follow up stupida: come posso impostare il proprietario del file?) –

+0

C'è un video qui: http://vimeo.com/5105309 che mostra come farlo nei primi 25 secondi circa. In pratica, usando xcode, aggiungi un nuovo file pennino al tuo progetto e fai doppio clic per aprirlo in Interface Builder. Selezionare l'oggetto Proprietario file (Cubo giallastro), quindi aprire Identity Inspector (Strumenti> Identity Inspector) e nella sezione "Identità classe" impostare la Classe sulla classe Controller di visualizzazione. Quindi sarai in grado di collegare le tue prese e azioni come prima. – theChrisKent

0

si può fare molto più facilmente se si copia e incolla letteralmente la vista all'interno del file pennino nello stesso file pennino, in modo da avere 2 viste separate all'interno di 1 file pennino.

example pic

allora si può scambiare tra i punti di vista, come si carica il pennino in questo modo:

NSArray *temp = [[NSBundle mainBundle] loadNibNamed:@"Widget" owner:self options:nil]; 
Widget *w = [temp objectAtIndex:0]]; // or 1 or 2 etc to get the different views 

questo copierà tutti i collegamenti dei pulsanti, ecc, in modo da poter semplicemente giocherellare con la copia, senza dover impostare tutto di nuovo

Problemi correlati