Práticas recomendadas para a tela de login do Storyboard, lidando com a limpeza de dados no logout

Estou construindo um aplicativo para iOS usando um Storyboard. O controlador de visualização raiz é um Controlador da Barra de Guias. Estou criando o processo de login / logout, e está funcionando normalmente, mas tenho alguns problemas. Eu preciso saber a melhor maneira de definir tudo isso.

Eu quero realizar o seguinte:

Mostrar uma tela de login na primeira vez que o aplicativo for iniciado. Quando eles fizerem login, vá para a primeira guia do Controlador da Barra de Guias.Sempre que eles iniciarem o aplicativo depois disso, verifique se eles estão conectados e pule diretamente para a primeira guia do Controlador da barra de guias raiz.Quando clicarem manualmente em um botão de logout, mostre a tela de login e limpe todos os dados dos controladores de visualização.

O que eu fiz até agora foi definir o controlador de visualização de raiz para o Controlador de Barra de Guias e criei um acompanhamento personalizado para o meu controlador de visualização de Login. Dentro da minha classe Controller Bar Tab, eu verifico se eles estão logados dentro doviewDidAppear método, e um execute o segue:[self performSegueWithIdentifier:@"pushLogin" sender:self];

Eu também configuro uma notificação para quando a ação de logout precisa ser executada:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];

Após o logout, eu apago as credenciais do Keychain, corro[self setSelectedIndex:0] e execute o segue para mostrar o controlador de visualização de login novamente.

Isso tudo funciona bem, mas estou me perguntando:esta lógica deveria estar no AppDelegate? Eu também tenho dois problemas:

A primeira vez que eles iniciam o aplicativo, o Tab Bar Controller mostra brevemente antes que a sequência seja executada. Eu tentei mover o código paraviewWillAppear mas o segue não funcionará tão cedo.Quando eles fazem logout, todos os dados ainda estão dentro de todos os controladores de visualização. Se eles fizerem login em uma nova conta, os dados da conta antiga ainda serão exibidos até que sejam atualizados.Eu preciso de uma maneira de limpar isso facilmente no logout.

Estou aberto para reformular isso. Eu considerei fazer a tela de login o controlador de visão raiz, ou criar um controlador de navegação no AppDelegate para lidar com tudo ... Eu não tenho certeza qual é o melhor método neste momento.

questionAnswers(8)

yourAnswerToTheQuestion