2012-10-06 8 views
5

Ci sono molti esempi di passaggio di dati tra due controller di vista, in cui un controllore vista naviga all'altro controller della vista.passano dati utilizzando delegati tra viewcontrollers senza alcuna connessione controller di navigazione

Ma è possibile passare i dati utilizzando i protocolli personalizzati & delegati tra i controller di visualizzazione che non sono collegati dal controller di navigazione?

Quindi, un esempio potrebbe essere: Tre controller di vista vale a dire, A, B, C. A passa a B e B a C. Io so come passare dati tra A & B usando protocolli personalizzati & delegati. Ma possiamo passare i dati tra C & A. Pertanto, A può essere delegato a C e quindi ricevere dati da C. È possibile?

Qualsiasi aiuto sarebbe apprezzato.

risposta

8

Un modo è utilizzare delegati per il passaggio all'indietro di dati

consultare simple-delegate-tutorial-for-ios collegamento per il passaggio di dati da C ad un controllore.

Controllare basic-delegate-example collegamento.

Un altro modo è quello di notifica distacco. per il passaggio all'indietro dei dati

collegamento Comunicate-Two-Views.

+0

Grazie per la vostra risposta iniziale. Ma nel primo esempio, i due controller di vista sono connessi usando la vista modale. Lo stesso vale per il secondo esempio. – footyapps27

+0

si possono usare le notifiche, ma volevo sapere se è possibile ottenerlo usando protocolli e delegati personalizzati. – footyapps27

+0

il secondo esempio non funzionerà, perché non ereditano il protocollo personalizzato. Ehi, so come passare i dati utilizzando i delegati tra due controller di vista connessi tramite il controller di navigazione. – footyapps27

1

È possibile utilizzare una certa classe Singleton e implementare il protocollo delegato in esso. Quindi avrai l'opportunità di passare i dati tra qualsiasi controller di visualizzazione.

+0

potresti chiarire un po' su quello. – footyapps27

+0

OK. Singleton è un pattern desisn che ha una sola istanza e puoi sempre chiamarlo da qualsiasi parte del tuo codice.Quindi nel tuo schema i controller A, B e C visualizzano un'altra classe D, che può avere accesso a qualsiasi controller, anche senza connessione con navigationController –

+0

Questi sono esempi di singleton NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; NSNotificationCenter * notificationCenter = [NSNotificationCenter defaultCenter]; UIApplication * myApplication = [UIApplication sharedApplication]; –

Problemi correlati