2017-03-05 5 views
-1

Der Kontext ist, wenn ein Benutzer auf die Anmeldeschaltfläche klickt, überprüft die Anwendung die Anmeldeinformationen mit Web-Service, und wenn Benutzer berechtigt ist, den Benutzernamen und das Passwort in userDefaults gespeichert (für die automatische Anmeldung beim Öffnen der Anwendung wieder)Abmelden Aktion funktioniert nicht

Jetzt benutze ich eine Abmelden-Taste auf der nächsten Seite (wo der Benutzer nach erfolgreicher Anmeldung geht), und das ist mein Code für diese Abmelden-Taste, die nicht funktioniert.

Laut mir, durch Antippen der Abmeldung, sollte es die userDefaults löschen und zurück zur Anmeldeseite gehen. derzeit bin ich nicht besorgt über das Aussehen, hilf mir einfach mit dem Code.

Funktion zum Hinzufügen der Schaltfläche.

override func viewDidLoad() 
     { 
      super.viewDidLoad() 
      let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.trash, target: nil, action: #selector(self.logoutButtonTapped(_:))); 
      navigationItem.rightBarButtonItem = doneItem; 
      // Do any additional setup after loading the view. 
     } 

Funktion für Logout-Button:

func logoutButtonTapped(_ sender: Any) 
    { 
     let defaults = UserDefaults.standard 
     defaults.removeObject(forKey: "userName") 
     defaults.removeObject(forKey: "userPassword") 
     let newViewObject = storyboard?.instantiateViewController(withIdentifier: "LoginPageViewController") as! LoginPageViewController //LoginPageViewController is my login view file, and identifier also has the same name. 
     navigationController?.pushViewController(newViewObject, animated: true) 
    } 

Das ist mein Drehbuch. Ich füge Knopf programmatisch hinzu. enter image description here

+0

können Sie Ihre stroyboard Szene zeigen –

+0

Stellen Sie den 'target' auf' self' –

Antwort

0

wenn Ihre Login-VC als Anfangs VC, dann an dieser Stelle nennen

let newViewObject = storyboard?.instantiateViewController(withIdentifier: "LoginPageViewController") as! LoginPageViewController //LoginPageViewController is my login view file, and identifier also has the same name. 
    navigationController?.pushViewController(newViewObject, animated: true) 

Verwendung

_ = navigationController?.popViewController(animated: true) 

sonst

_ = navigationController?.popToRootViewController(animated: true) 

Update Antwort

func logoutButtonTapped(_ sender: Any) 
    { 
     let defaults = UserDefaults.standard 
     defaults.removeObject(forKey: "userName") 
     defaults.removeObject(forKey: "userPassword") 
     _ = navigationController?.popToRootViewController(animated: true) 

    } 

für zB

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(logoutButtonTapped)) 

und rufen Sie die Aktion wie

func logoutButtonTapped() { 

    let defaults = UserDefaults.standard 
    defaults.removeObject(forKey: "userName") 
    defaults.removeObject(forKey: "userPassword") 

    // _ = navigationController?.popViewController(animated: true) 

    _ = navigationController?.popToRootViewController(animated: true) 



} 
+0

diese https zum Beispiel sehen : //makeapppie.com/tag/uinavigationcontroller-in-swift/ –

+0

Sicher werde ich das sehen, ich werde auch diese Antwort versuchen. Vielen Dank. :) Ich habe auch meine Frage mit Storyboardbild aktualisiert. –

+0

können Sie sich anmelden Aktion –

Verwandte Themen