Pergunta

Tento explicar meu problema.No appdelegate tenho que selecionar um rootViewController dependendo do resultado de uma solicitação assíncrona (estou usando o framework AFNetworking).Na verdade, preciso saber se meu usuário tem perfil ou não:se ele tiver um perfil, posso mostrar a página inicial do aplicativo; se não, tenho que mostrar a ele uma visualização de perfil.

No storyboard defini a visualização Home como ponto de entrada designado, mas desta forma esta visualização é sempre mostrada até que a solicitação assíncrona seja concluída.Existe uma maneira de fazer o appdelegate aguardar a resposta?

Foi útil?

Solução

Eu acho que não há boa solução para permitir que o app delegate aguarde a resposta, porque se a conexão de rede será ruim, o tempo de carregamento do aplicativo será muito longo e o OS poderá matar seu aplicativo ou o usuário pode desligá-lo.

.

Você pode adicionar algum controlador de visualização de carregamento (com animação, então o usuário saberá que o aplicativo está fazendo alguma coisa) em vez de casa um e quando você recebe a resposta presente a visão apropriada para o usuário (Modal Segue poderia fazer o trabalho). Espero que esta ajuda

Outras dicas

Uma solução melhor é usar telas de respingo.Ou seja, quando seu aplicativo é carregado no AppDelegate, crie e pressione um controlador de visualização de respingos.O que apenas conteria um único UiImageView cobrindo a tela inteira mostrando sua imagem de respingo de aplicativos.Após a conclusão de chamadas assíncronas, pop que o controlador de exibição de respingo e pressione o controlador de visualização necessário.

Muitos aplicativos usam essa maneira para baixar dados assíncronos necessários antes de mostrar o aplicativo.Para que o usuário não vê telas vazias ou dados de lixo.

Se algo for falhado como falha de conectividade da Internet ou erro de resposta do servidor, etc., mostrar erro para o usuário e executar o tratamento de erros de acordo com sua lógica de aplicativos.

Você pode navegar programaticamente até o controlador de visualização raiz como

[self.navigationController popToRootViewControllerAnimated:YES];

Este código pode ser colocado na condição de resultado.

Ou do seu jeito, acho que você criou uma sequência para navegar até o rootViewController.Você pode executar programaticamente uma segue usando

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

Se você estiver usando o AFNetworking, basta adicionar um método no bloco de sucesso e passar a resposta a esse método em um parâmetro de dicionário.Verifique sua resposta no método e escolha o controlador que você deseja tornar o controlador de visualização raiz desse método.

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