Pregunta

Intento explicar mi problema.En AppDelegate, tengo que seleccionar un FootViewController dependiendo del resultado de una solicitud asíncrona (estoy usando un marco AFNetworking).De hecho, necesito saber si mi usuario está perfilado o no: si está perfilado, puedo mostrarle la casa de la aplicación, si no es que tengo que mostrarle una vista de perfil.

En el guión gráfico, configuro la vista de inicio como el punto de entrada designado, pero de esta manera esta vista siempre se muestra hasta que se complete la solicitud asíncrona.¿Hay alguna manera de hacer que Appdelegate espere la respuesta?

¿Fue útil?

Solución

Creo que no hay una buena solución para permitir que el delegado de la aplicación espere la respuesta porque si la conexión de la red será deficiente, el tiempo de carga de la aplicación será muy largo y OS podría matar su aplicación o el usuario puede apagarlo.

Puede agregar un poco de controlador de visualización de carga (con la animación, por lo que el usuario sabrá que la aplicación está haciendo algo) en lugar de Inicio Uno y cuando reciba la respuesta presente la vista apropiada al usuario (Modal Segue podría hacer el trabajo). Espero que esta ayuda

Otros consejos

Una mejor solución es usar pantallas de salpicaduras.Es decir, cuando su aplicación se carga en AppDelegate, cree y presione un controlador de vista de salpicaduras.Que contendría una sola pantalla completa de UIIMAGEVIEW, que muestra la imagen de salpicaduras de su aplicación.Tras la finalización de llamadas asíncrona, POP ese controlador de vista de salpicaduras y presiona su controlador de vista requerido.

Muchas aplicaciones utilizan esta forma de descargar los datos asíncronos necesarios antes de mostrar la aplicación.Para que el usuario no vea las pantallas vacías o los datos de basura.

Si algo se ha fallado, como error de falla de conectividad de Internet o error de respuesta del servidor, etc., Muestre un error al usuario y realice el manejo de errores de acuerdo con la lógica de su aplicación.

Puede navegar programáticamente al controlador de vista raíz como

[self.navigationController popToRootViewControllerAnimated:YES];

Este código se puede poner en la condición de resultado.

o en su camino, creo que se crea un Segue para la navegación al Controlador de Raíces.Puede realizar programáticamente un segue usando

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

Si está utilizando AFNetworking, simplemente agregue un método en el bloque de éxito y pase la respuesta a ese método en un parámetro del diccionario.Verifique su respuesta en el método y elija el controlador que desea hacer que el controlador de visión de la raíz de ese método.

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