Ho un controller di visualizzazione con un'etichetta e un campo di testo. Ho anche aggiunto una vista container che punta a un altro controller di visualizzazione tabella con una sezione e tre righe, in pratica una vista tabella statica. Non riesco a trovare alcuna documentazione/esempio che indichi come si passano i dati tra il controller Vista che tiene il contenitore Vista contenitore e Vista tabella incorporato nella vista contenitore. Voglio una comunicazione a entrambi i lati?In iOS 6, come si usano i dati di pass tra il controller View che tiene l'oggetto 'Vista contenitore' e il controller Vista tabella che è incorporato in esso?
risposta
Ci sono nuove proprietà su UIViewController -childViewControllers e -parentViewController. Potresti usarli.
In alternativa è possibile impostare una relazione da soli. Stanco dei cicli di conservazione. Forse il genitore possiede il bambino e il bambino ha un debole riferimento al genitore.
Se si impostano le cose in uno storyboard, si utilizzano segues. Proprio come quasi tutto il resto negli storyboard.
Il controller incorporato nella vista contenitore (storyboard), viene aggiunto automaticamente come childViewController del controllore in cui viene aggiunta la vista contenitore. Giusto per dare un senso a quello che voglio dire, aggiungere questa riga, nel metodo viewDidLoad del controller di base:
NSLog(@"children : %@", self.childViewControllers);
Allora supponiamo in VC1, si aggiunge una vista contenitore con un VC2 controller integrato (il vostro tableViewController), quindi l'istruzione precedente registrerà VC2 come figlio di VC1. Per accedere a VC2 da VC1, utilizzare semplicemente [self.childViewControllers objectAtIndex: 0] e per accedere a VC1 da VC2, utilizzare self.parentViewController.
Spero che questo aiuti
[self.childViewControllers lastOject]
o [self.childViewControllers objectAtIndex:index];
, a seconda di quanti bambino VC di cui si dispone.