4 MINDS

4MINDS Gestão de Conhecimento

Change root view and back to root view


Vou postar um código para resolver a seguinte necessidade:

Estou em uma view da app (UIViewController), que pode ser uma view dentro de outra view.. ou seja, estou na pilha de UIViewController do app, e preciso voltar para a tela inicial a partir dessa view. Além disso ainda preciso alterar a root view:

Exemplo: 

1 - App entra na tela do perfil do usuário
2 - Do perfil, vou para a tela de configurações
3 - Nessa tela, tenho uma opção de sair/logout
4 - Então preciso que meu root view, que antes era o perfil seja a tela de login. E preciso ir diretamente para essa tela, e o ciclo de iteração entre telas reinicie.

    NSArray* ctrls = [self.navigationController viewControllers];

    for(UIViewController *temp in ctrls){

        [temp removeFromParentViewController];    

    }


    UIViewController *login = [[LoginViewController alloc] init];

    [[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];

    [[UIApplication sharedApplication] keyWindow].rootViewController = login;

    [self.navigationController popToRootViewControllerAnimated:YES];