/ / Jak mogę zmienić rootViewController na VC, który nie został jeszcze załadowany? - ios, swift3, uiviewcontroller, uistoryboard

Jak mogę zmienić rootViewController na VC, który nie został jeszcze załadowany? - ios, swift3, uiviewcontroller, uistoryboard

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 № 1

Weź 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