Me estaba rascando la cabeza con esto hace una semana, y ahora con un poco más de experiencia Cocoa en mi haber siento que tengo una idea de lo que podría estar pasando.¿ParentViewController es siempre un controlador de navegación?
Estoy haciendo una aplicación que es manejada por un UINavigationController. En AppDelegate, creo una instancia de esta clase, usando "página 1" como el Controlador de Root View.
UINavigationController *aNavigationController = [[UINavigationController alloc]
initWithRootViewController:page1ViewController];
Ahora aquí es donde estoy teniendo el problema. Desde la "página 1" me gustaría utilizar un controlador de vista modal que se desliza sobre la interfaz y luego desaparece una vez que el usuario ha realizado una edición. Hago que el uso de un código como éste, en el interior de Page1ViewController:
[self presentModalViewController:myModalViewController animated:YES];
Cuando el controlador de vista modal se ha ido, quiero un valor en "Página 1" para cambiar sobre la base de lo que el usuario introduce en el controlador de vista modal. Por lo tanto, he escrito algo de código como este, que reside en el controlador de vista modal:
[self.parentViewController dismissModalViewControllerAnimated:YES];
[self.parentViewController doSomethingPleaseWithSomeData:someData];
La actualización a la página 1 no estaba ocurriendo, y me llevó mucho tiempo darse cuenta de que el mensaje "doSomethingPleaseWithSomeData" era no se envía a Page1ViewController, sino al Controlador de navegación.
¿Esto es de esperar al usar los controladores de navegación? ¿Tal vez configuré algo incorrectamente? ¿Hay alguna manera fácil de acceder al Controlador de Vista que quiero (en este caso, Page1ViewController)?
¡Realiza exactamente lo que quiero, gracias! Soy nuevo en Cocoa, pero no en MVC. El problema es que, siendo un desarrollador web de Java, casi siempre me olvido de que los controladores en "C" PUEDEN interactuar entre ellos. – bpapa
Una buena respuesta, pero ¿por qué es este el caso? Claramente * no * ese caso es que parentViewController de la vista modal es el controlador de navegación en cualquier sentido lógico (page1Controller es el controlador que solicita la visualización modal), entonces, ¿por qué Cocoa Touch lo configuró de esta manera? –