Por lo tanto, ver A carga la vista B. Más tarde, ver B carga la vista C y quiere empujar su controlador de vista hacia el controlador de navegación aguas arriba de la vista B? ¿visto como? ver el controlador.
Siempre que la vista B tenga un controlador de vista que forma parte de la pila de navegación, su controlador de vista puede tomar el controlador de navegación, sin importar cuán lejos esté la pila, a través de [self navigationController]
.
Las vistas no tienen un puntero a su controlador, pero si quería romper totalmente MVC, podría hacer que el controlador establezca uno solo. El mejor enfoque sería hacer que el controlador reciba la acción de tocar (o lo que sea que eso suceda cargando y presionando la vista C) y luego hacer que el controlador de vista maneje el intercambio. Por ejemplo, si la vista B es una vista de tabla, establecería su controlador de vista como UITableViewDelegate
para que pueda manejar la selección de una fila presionando un nuevo controlador de vista.
Su pregunta parece indicar que no está distinguiendo entre una vista, su controlador de vista, un controlador de navegación y la vista que se muestra en la región de contenido del controlador de navegación. Todos estos objetos desempeñan un papel diferente, por lo que sería rentable que los estudie más de cerca y sus interrelaciones antes de seguir desarrollando su aplicación.
UGH. así que arreglé los errores tipográficos. Voy entre Mac OS y la programación de iOS con demasiada frecuencia. –