Pregunta

Estoy creando una aplicación que comienza cargando un controlador de vista de "descarga" que obtiene una matriz de datos a través de una llamada API. Una vez que se devuelven los datos, la aplicación oculta la vista de este controlador de vista y carga un controlador de barra de pestañas, que alberga dos controladores de navegación.

La primera vista introducida en el primer controlador de navegación es una vista de tabla. Es en esta vista de tabla que necesito mostrar los datos recuperados de la llamada API en el controlador de vista de 'descarga' inicial.

¿Puede alguien explicarme cómo pasaría estos datos entre los controladores de 'descarga' y de vista de tabla? Teniendo en cuenta que no se conocen entre sí.

Una nota importante es que los datos deben recuperarse antes de cargar el controlador de la barra de pestañas, por lo que no es posible recuperar los datos desde el controlador de vista de tabla que los usará.

¿Fue útil?

Solución

Sus datos están subordinados a la aplicación, por lo que el delegado de la aplicación podría mantener el puntero a los datos, luego las dos vistas podrían acceder a ellos utilizando [[UIApplication sharedApplication] delegate] .

Otra opción sería enviar un mensaje con los datos al delegado de la aplicación cuando se complete la descarga. Supongo que ya está haciendo algo como esto, ya que dice que la aplicación oculta la vista del controlador de vista, en lugar de que el controlador de vista se oculte. De alguna manera debe saber que la descarga está completa. Entonces, en el controlador de descarga:

- (void) downloadFinished {
    [listener downloadFinished:data];
}

Y en su delegado de aplicación (el oyente del fragmento anterior):

- (void) downloadFinished:(NSData *)data {
    CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
    [downloadView removeFromSuperview];
    [window addSubview:c.view];
}

Donde su controlador de vista personalizado se ocupa de cargar la NIB y retener los Datos para que la tabla acceda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top