Wyobraź sobie aplikację taką jak Twitter, w której razpo zalogowaniu się, ekran wylogowania nigdy się nie pojawi, dopóki się nie wylogujesz. Zrobiłem to, zmieniając początkowy viewController w appDelegate przy uruchomieniu. Jednak, kiedy zamierzasz się wylogować, nie ma już nic poniżej nowego VC na stosie, do którego można by się odrzucić. Jak poprawnie ustawić ekran logowania jako rootViewController po załadowaniu widoku początkowego, aby móc go zamknąć po wylogowaniu?
W appDelegate zmieniłem początkowe PCV tak:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "RootVC")
self.window?.rootViewController = initialViewController
A potem chciałbym w zasadzie wstawić signInVC pod moją początkową VC, aby móc ją „odrzucić”.
Odpowiedzi:
0 dla odpowiedzi № 1Weź wartość bool o nazwie signup_status i zapisz ją w UserDefaults.standard i ustaw na false
I zmień tę wartość na true, gdy użytkownik jest zalogowany, a make jest false, gdy się wyloguje
Teraz w AppDelegate sprawdź, czy użytkownik jest zalogowany, czy nie
if UserDefaults.standard.bool(forKey: "signup_status"){
//if true the dont show login page and make home screen root view controller
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let viewController = storyBoard.instantiateViewController(withIdentifier: "homepage") as! homepageViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
}else {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let viewController = storyBoard.instantiateViewController(withIdentifier: "login") as! login
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
}
teraz wyloguj się
ustaw wartość UserDefaults.standard dla klucza signup_status false
UserDefaults.standard.set(false, forKey: "signup_status")
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let viewController = storyBoard.instantiateViewController(withIdentifier: "login") as! login
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController