Otra forma es esconder los controles de vista a los que está profundizando como variables locales de clase; luego, en viewWillAppear, sabe que recibió un golpe debido a una ampliación si todavía se establece alguna de las variables locales de clase. Incluso sabe de qué controlador regresó el usuario, por lo que puede hacer una lógica diferente (como buscar valores modificados de los controladores de vista a los que profundizó).
No olvides soltar y anular las referencias en la vista Aparecerán para que el sistema se restablezca y vuelva a reconocer las cosas correctamente.
Me gusta más este mecanismo que tener los controladores detallados sobre la vista maestra como un delegado para enviar cambios, ya que a menudo están trabajando en un pequeño trozo de datos separados y no deberían tener que saber acerca de un controlador de vista maestro completo. Los hace más fáciles de reutilizar también, ya que pueden ser llamados por muchas clases diferentes.
He estado luchando con esto, también. Esperaba crear una clase de ayuda y convertirla en el "UINavigationControllerDelegate" de mi "pila", y luego mirar a través de "navigationController: willShowViewController:" pero hay dos problemas: 1) parece que se llama incluso cuando no está presionado (como tabular sobre esa pila - que parece sospechoso) y 2) esto se llama DESPUÉS de la vista del controlador relacionado, aparecerá, que me causa problemas de lógica, ya que necesito saber si estoy en la misma pila antes de que aparezca la vista. Solo estoy señalando esto porque este enfoque parecía elegante, pero era un callejón sin salida. –