Najlepsze praktyki dotyczące ekranu logowania Storyboard, obsługa usuwania danych po wylogowaniu

Buduję aplikację na iOS przy użyciu serii ujęć. Kontrolerem widoku głównego jest kontroler paska kart. Tworzę proces logowania / wylogowania i działa on głównie dobrze, ale mam kilka problemów. Muszę znać NAJLEPSZY sposób, aby to wszystko ustawić.

Chcę wykonać następujące czynności:

Pokaż ekran logowania przy pierwszym uruchomieniu aplikacji. Po zalogowaniu przejdź do pierwszej karty kontrolera paska kart.Za każdym razem, gdy uruchamiają aplikację, sprawdź, czy są zalogowani i przejdź bezpośrednio do pierwszej karty głównego kontrolera paska kart.Po ręcznym kliknięciu przycisku wylogowania pokaż ekran logowania i usuń wszystkie dane z kontrolerów widoku.

Do tej pory ustawiłem kontroler widoku głównego na kontroler paska kart i utworzyłem niestandardowy segment do kontrolera widoku logowania. W mojej klasie kontrolera Tab Bar sprawdzam, czy są zalogowani wewnątrzviewDidAppear metoda i wykonać segue:[self performSegueWithIdentifier:@"pushLogin" sender:self];

Ustawiam również powiadomienie, kiedy należy wykonać akcję wylogowania:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];

Po wylogowaniu usuwam poświadczenia z pęku kluczy, uruchom[self setSelectedIndex:0] i wykonaj segue, aby ponownie wyświetlić kontroler widoku logowania.

To wszystko działa dobrze, ale zastanawiam się:czy ta logika powinna znajdować się w AppDelegate? Mam też dwie kwestie:

Przy pierwszym uruchomieniu aplikacji, kontroler paska kart wyświetla się krótko przed wykonaniem segue. Próbowałem przenieść kod doviewWillAppear ale segue nie zadziała tak wcześnie.Po wylogowaniu wszystkie dane nadal znajdują się we wszystkich kontrolerach widoku. Jeśli zalogują się do nowego konta, stare dane konta są nadal wyświetlane do momentu odświeżenia.Potrzebuję sposobu, aby to łatwo usunąć po wylogowaniu.

Jestem otwarty na przerobienie tego. Rozważałem utworzenie ekranu logowania kontrolera widoku głównego lub utworzenie kontrolera nawigacji w AppDelegate, aby obsłużyć wszystko ... Nie jestem pewien, jaka jest najlepsza metoda w tym momencie.

questionAnswers(8)

yourAnswerToTheQuestion