Pergunta

Eu tenho um longo - (void)viewDidLoad { } Função que usa a Internet para carregar uma página e, sempre que o aplicativo carrega o URL, a tela é preta. eu tenho um UIActivityIndicator Configure para mostrar que o endereço está carregando, mas não sei como impedir que pareça que o aplicativo não está respondendo, e não quero mostrar o indicador de atividade de rede [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; Porque a tela ainda será preta, apenas com um carregador no canto superior. Meu código está abaixo:

- (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
    }
}

Nenhuma solução correta

Outras dicas

Em vez de bloquear no ViewDidload, tente iniciar um novo thread que faça o carregamento. Então você apenas inicia a visualização com texto que diz que as coisas estão carregando e atualiza qualquer conteúdo necessário quando estiver disponível.

Talvez você possa adicionar um texto dizendo que algo está carregando. Ou você também pode brincar com os métodos de delegados NSURLConnection para fornecer uma barra de progresso em vez de apenas um indicador de progresso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top