¿Cómo detectar iOS programáticamente cuando se abre el controlador de vista superior?

Supongamos que tengo una pila de controladores de navegación con 2 controladores de vista: VC2 está en la parte superior y VC1 está debajo. ¿Hay algún código que pueda incluir en VC1 que detecte que VC2 acaba de salirse de la pila?

Ya que estoy tratando de detectar el estallido de VC2 desde dentro del código para VC1, parece que algo comoVer Aparecerá oviewDidAppear no funcionará, porque esos métodos se activan cada vez que se muestra VC1, incluso cuando se empuja por primera vez en la pila.

EDITAR: Parece que no estaba muy claro con mi pregunta original. Esto es lo que estoy tratando de hacer: determinar cuándo se muestra VC1 debido a que VC2 se sacó de la parte superior de la pila. Esto es lo que NO estoy tratando de hacer: determinar cuándo se muestra VC1 debido a que se empujó en la parte superior de la pila. Necesito alguna forma que detecte la primera acción pero NO la segunda.

Nota: no me importa particularmente el VC2, puede ser cualquier número de otros VC que se quiten de la pila, lo que sí me importa es cuando VC1 se convierte nuevamente en la parte superior de la pila debido a que algún otro VC comienza a salirse de la pila. parte superior.