Pregunta

Tengo una función - (void)viewDidLoad { } larga que utiliza el Internet para cargar una página, y cada vez que la aplicación carga la URL, la pantalla es de color negro. Tengo una configuración UIActivityIndicator para mostrar que la dirección está cargando, pero no sé cómo evitar que parecía como si la aplicación no responde, y yo no quiero mostrar el indicador de actividad de la red [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; porque la pantalla siendo negro, sólo con un cargador en la esquina superior. Mi código es el siguiente:

- (void)viewDidLoad {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    email.text = [defaults objectForKey:@"mom_email"];
    pass.text = [defaults objectForKey:@"mom_pass"];
    if (email.text != nil && pass.text != nil) {
        [self login:loginBtn];
    }
}
- (IBAction)login:(id)sender {
    [email resignFirstResponder];
    [pass resignFirstResponder];
    [loader startAnimating]; // Does nothing though
    NSString *em = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)email.text,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
    NSString *ps = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)pass.text,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
    NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:@"localhost" path:[[NSString alloc] initWithFormat:@"/app/login.php?email=%@&pass=%@", em, ps]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *loginResult = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    [loader stopAnimating];
    NSRange range = [loginResult rangeOfString:@"1"];
    if (range.location != NSNotFound) {
        [self dismissModalViewControllerAnimated:YES]; // Doesn't do anything if function called from viewDidLoad
    }
}

No hay solución correcta

Otros consejos

En lugar de bloquear en el viewDidLoad, intente iniciar un nuevo hilo que hace la carga. A continuación, sólo INIT la vista con el texto que dice que las cosas son de carga y actualización de contenido de lo que sea necesario una vez que esté disponible.

Puede tal vez añadir un texto diciendo algo se está cargando. O también puede jugar con los métodos NSURLConnection delegado para proporcionar una barra de progreso en lugar de sólo un indicador de progreso.

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