Mi stavo un po 'graffiando la testa una settimana fa, e ora con un po' di esperienza in più di cacao sotto la cintura mi sento come se avessi una vaga idea di cosa potrebbe succedere.ParentViewController è sempre un controller di navigazione?
Sto facendo un'applicazione guidata da un UINavigationController. In AppDelegate, creo un'istanza di questa classe, utilizzando "pagina 1" come Root View Controller.
UINavigationController *aNavigationController = [[UINavigationController alloc]
initWithRootViewController:page1ViewController];
Ora ecco dove sto avendo il problema. Dalla "pagina 1" mi piacerebbe utilizzare un controller modale di visualizzazione che scorre sull'interfaccia e quindi scompare una volta che l'utente ha apportato una modifica. Lo faccio utilizzando il codice come questo, all'interno di Page1ViewController:
[self presentModalViewController:myModalViewController animated:YES];
Quando il modale View Controller è andato, io voglio un valore su "Page 1" per cambiare in base a ciò che l'utente è entrato nel View Controller modale. Così, ho scritto qualche codice come questo, che risiede nella View Controller modale:
[self.parentViewController dismissModalViewControllerAnimated:YES];
[self.parentViewController doSomethingPleaseWithSomeData:someData];
L'aggiornamento a pagina 1 non stava accadendo, e ci ho messo molto tempo per rendersi conto che il messaggio "doSomethingPleaseWithSomeData" era non inviato a Page1 ViewController, ma al Navigation Controller.
E 'tutto da aspettarsi quando si usano i controlli di navigazione? Ho forse configurato qualcosa di inappropriato? C'è un modo semplice per ottenere il controller di visualizzazione che voglio (in questo caso, Page1ViewController).
Compie esattamente ciò che voglio, grazie! Sono nuovo di Cocoa, ma non di MVC. Il fatto è che, essendo uno sviluppatore web Java, quasi sempre dimentico che i controller in "C" possono interagire tra loro! – bpapa
Una buona risposta, ma perché è questo il caso? Chiaramente * non * quel caso che il controllore parentView della vista modale è il controller di navigazione in qualsiasi senso logico (page1Controller è il controller che richiede la visualizzazione modale), quindi perché Cocoa Touch lo ha impostato in questo modo? –