2017-08-03 2 views
0

Ich denke, es kann dupliziert werden, aber ich suche überall und habe keine Lösung für mich gefunden.Disssmiss von UITabBarController

So über meine Frage. Ich habe so etwas wie dieses open this image to see more

In meinem AppDelegate habe ich func

func logIn() { 

    let userExist = UserDefaults.standard.string(forKey: "auth_key_user") 
    if userExist != nil && userExist != "" { 
     let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let whereToGo = storyboard.instantiateViewController(withIdentifier: "AllPostsOfUserTabBarController") as! AllPostsOfUserTabBarController 
     window?.rootViewController = whereToGo 
    } 
} 

Wenn Benutzer existiert es mir zum ersten View-Controller innerhalb Tableiste Controller führen. Dort habe ich Navigationsschaltfläche mit Aktion zum Abmelden. Ich muss mich abmelden (Daten an den Server senden) und gehe dann zu meinem ersten View-Controller mit Textfeld und Button, wo ich mich wieder anmelden kann.

Wie muss ich es implementieren?

+0

Jede Ausgabe unter Verwendung der oben Code konfrontiert? – KKRocks

Antwort

0

Versuchen Sie diesen Code nach Logout-

DispatchQueue.main.sync() { 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let loginVC = storyboard.instantiateInitialViewController() 
    appDelegate.window?.rootViewController = loginVC 
} 

Hoffe, es hilft!

+0

Ich denke es sagt nur, welcher Controller sollte Initialen sein, aber nicht öffnen. –

+0

Ja, ich habe es versucht. Ich glaube, dass es in UITabBarController bleibt, weil es print von viewWillAppear in UITabBarController –

+0

My bad zeigt. Es funktioniert, es ist nur ich, dumm. Ich habe vergessen, Func von AppDelegate einzuschalten. Ich habe versucht, nicht nur mit UITabBarController, sondern mit UINavigationController eine Verbindung herzustellen und zu sehen, was passiert ist. Vielen Dank für die Beantwortung. –

0

Setzen Sie diesen Code in Abhängigkeit von Ihrem Logout-Button. Es wird dich zu deinem Root-Controller zurückwerfen.

func logoutBtnClicked() 
{ 
    DispatchQueue.main.sync() 
    { 
    (send your data to server) 

    self.navigationController?.popToRootViewController(animated: true) 
    } 
} 
0

die Sie interessieren in AppDelegate

Während Anmeldung

self.window?.rootViewController = whereToGo 

Während Logout

func setupLoginViewController() { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let loginVC: UIViewController? = storyboard.instantiateViewController(withIdentifier: "loginVCID") as? UIViewController 
     let navController: UINavigationController? = UINavigationController(rootViewController: loginVC!) as UINavigationController 

     window?.rootViewController = navController 
    } 
+0

Was bedeutet "Constant.StoryBoard ..."? –

+0

Entschuldigung, ich habe vergessen zu erwähnen, dass es das Storyboard-Objekt ist. – KKRocks

+0

@Abhishek Jain gab eine Antwort. Ihr Code funktioniert auch, aber nachdem es zurück zur ursprünglichen Ansicht Controller und ich den Knopf drücken nichts passiert ist. Mein Code sieht so aus: '@IBAction func transferData (_ sender: Any) { lassen Sie myVC = self.storyboard? .instantiateViewController (withIdentifier:" TabBarController ") as! TabBarController myVC.textInputTB = textField.text! self.navigationController? .pushViewController (myVC, animiert: true) } ' –

Verwandte Themen