¿Cómo se mantienen los datos entre las pantallas de la aplicación iOS?

Tengo algunas cadenas de datos que desde una pantalla de mi aplicación que quisiera almacenar (en un model) y luego recuperan si el usuario vuelve a navegar a la misma página. En este momento los datos se almacenan bien en un model, sin embargo, estoy encontrando un problema porque parece que cada vez que regresas a una pantalla generas una nueva instancia del controller. Por lo tanto, mi model no es de ninguna utilidad porque pierdo una reference al mismo (actualmente se almacena como una variable de instancia dentro de mi controller). ¿Qué estoy haciendo mal?

¿Qué estoy haciendo mal?

Normalmente, tendrá un model (que podría ser una colección de objects, no necesariamente uno) que se comparte en su documento o aplicación. Cuando se crea un controller de vista, se le da una reference al model (o a una parte del model). Si a su vez crea otro controller de vista, le pasa una reference al model a ese object. El model es así compartido por todos los controlleres de vista. El model no se olvida cuando se desasigna un controller de vista porque los otros controlleres lo saben.

Parece que tienes el principio de un model, pero está limitado a un controller de vista única. Tal vez también tenga la misma situación con algunos de sus otros controlleres de vista. Piensa en cómo puedes unir todos esos pequeños models en un gráfico de object más grande. Eso hará que sea más fácil de recordar, y también le permite poner la responsabilidad de save todo el model en un solo object como el delegado de la aplicación o el controller de vista raíz.

Parece que necesita mantener los datos de su model en el disco, probablemente utilizando NSUserDefaults, que es el mecanismo de almacenamiento más apropiado para pequeñas cantidades de datos como este.

Hay al less las siguientes pocas opciones que podría considerar:

  1. Como dijo Andrew, mantenga los datos en el disco a través de NSUserDefaults.
  2. Use un patrón de layout singleton para crear un object de "administrador" de datos que persista los datos durante la vida útil de la aplicación.
  3. Intente averiguar por qué se está creando una nueva instancia del controller de vista (que puede ser obvio o no tan obvio dado su código) e intente hacer las cosas de manera un tanto diferente para reutilizar el controller de vista (que puede ser simple o difícil dado su código).

Dado que está utilizando el guión gráfico descrito en su comentario, consideraría la opción 2, a less que lo que realmente quiere hacer es cambiar el patrón de navigation de sus controlleres de vista.

Cuando presiona un controller de vista en la navigation y luego vuelve a él, persiste . Pero aún si desea que algunos datos persistan en varias pantallas, las instancias singleton son una buena idea.