2010-04-18 17 views
7

Ho una semplice vista personalizzata che è collegata tramite presa a un NIB. Per questa particolare vista, ci sono azioni che vorrei eseguire sulla vista quando viene inizializzata, indipendentemente da quale NIB sia attiva.Quale metodo viene chiamato UIView quando viene istanziato da un NIB?

Il problema è, né i metodi (id) init o (id) initWithFrame: (CGRect) vengono richiamati nella visualizzazione personalizzata.

Quale metodo viene chiamato su un UIView quando viene istanziato da un NIB? Vorrei solo usare il controller di visualizzazione e il metodo viewDidLoad, tranne per il fatto che questa particolare vista appare su molti NIB diversi.

risposta

14

È possibile utilizzare awakeFromNib per questo tipo di inizializzazione. I normali metodi di inizializzazione vengono chiamati quando l'oggetto viene effettivamente creato da IB e quindi archiviato utilizzando NSCoding, quindi tali metodi non vengono mai chiamati all'interno dell'applicazione. Potresti anche eseguire l'override di initWithCoder: che verrà chiamato, ma non lo consiglio poiché non è possibile cablare altre prese in quel momento.

+0

Perfetto! Per qualche ragione ho pensato che awakeFromNib fosse limitato a UIViewController - ancora una volta, questo dimostra che a volte basta un secondo paio di occhi :) –

+1

@retailevolved: Sì, quando viene caricato un file di pennino, ogni oggetto nel file pennino che è Unarchived (eccetto per gli oggetti proxy - poiché quelli non sono effettivamente non archiviati dal pennino) verrà inviato un messaggio WakeFromNib dopo che tutti gli oggetti sono stati annullati e tutte le prese sono state cablate. –

Problemi correlati