2011-12-04 22 views
58

Quando la visualizzazione viene caricata manualmente, lo sviluppatore mantiene il controllo sulle inizializzazioni, scegliamo quale inizializzatore chiamare, quali variabili impostare ecc.Come viene inizializzata la vista quando caricata tramite uno storyboard?

Quando la vista viene caricata dallo storyboard segue ... cosa succede a quello initializer? Dove dovrebbero essere impostate le variabili mi piacerebbe essere disponibile una volta caricata la vista?

Per favore aiutami a capire la sequenza qui. Come viene creata qui l'istanza della classe, chi la crea e come possiamo intervenire e aiutarla a configurarla a nostro piacimento?

risposta

89

Quando una vista viene caricata da un pennino o uno storyboard, viene chiamato il metodo -initWithCoder:. Come -initWithFrame:, -initWithCoder: è un inizializzatore designato per UIView. Se hai intenzione di eseguire l'inizializzazione personalizzata per una sottoclasse UIView, devi assicurarti che ciò avvenga per entrambi questi metodi. Una tecnica comune consiste nell'aggiungere un metodo di inizializzazione comune che chiami sia da -initWithFrame: sia da -initWithCoder:. Vedere my answer a Custom view and implementing init method? per una descrizione più dettagliata.

Si noti che la documentazione per -initWithFrame: spiega:

Se si utilizza Interface Builder per progettare l'interfaccia, questo metodo è non chiamato quando gli oggetti vista sono successivamente caricati dal file nib. Gli oggetti in un file di pennino vengono ricostituiti e quindi inizializzati utilizzando il loro initWithCoder: metodo, che modifica gli attributi di la vista per abbinare gli attributi memorizzati nel file pennino.

Problemi correlati