Domanda

La mia app basata su tabBarController ha diverse schede. Ognuno ha una classe viewController personalizzata, l'unica differenza è la modalità di inizializzazione dell'istanza. C'è un modo per fare in modo che il builder di interfacce invii i diversi parametri di inizializzazione delle schede personalizzate?

Attualmente sto eseguendo l'inizializzazione in viewWillAppear, ma per una serie di ragioni avrebbe senso farlo in IB invece che nel codice.

Qualche suggerimento?

Grazie, Kelso

È stato utile?

Soluzione

Interface Builder crea un archivio di oggetti non archiviato durante l'esecuzione del programma. Non puoi davvero dire a IB di chiamare metodi particolari.

Se è necessario inizializzare prima che venga chiamato viewWillAppear: , è possibile farlo in awakeFromNib , che è garantito per essere chiamato dopo che tutti gli oggetti sono stati caricati e tutte le prese sono stati collegati ai loro obiettivi.

Se si desidera eseguire l'inizializzazione anche prima, è possibile farlo sostituendo initWithCoder: (consultare il protocollo NSCoding per la documentazione). Non so se sia documentato da nessuna parte, ma è l'inizializzazione designata per gli oggetti che vengono decodificati da un archivio.

In tutto quanto sopra, non sarai in grado di ricevere parametri, ma nel codice dovresti essere in grado di accedere a tutto ciò di cui hai bisogno con un uso giudizioso delle variabili globali. Puoi anche utilizzare [[UIApplication sharedApplication] delegate] per ottenere l'accesso all'oggetto delegato dell'applicazione.

Altri suggerimenti

Non credo che ci sia modo di cambiare i metodi che vengono chiamati dal runtime IB quando viene caricato il pennino. Se descrivi ciò che stavi cercando di realizzare (ovvero perché eseguire l'installazione in viewDidAppear non funziona per te), potresti ricevere un suggerimento su un modo migliore di gestire l'inizializzazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top