2016-05-27 7 views
3

Ich habe eine Schaltfläche, die zu einer anderen Ansicht geht. Ich möchte etwas Code ausführen, bevor sich das Segment bewegt. Das Problem, mit dem ich konfrontiert bin, ist, dass der Übergang zur anderen Seite geht, bevor der Code eine Chance hat, zu beenden. Daher werden die Werte, die sich im Benutzerstandard befinden, nicht geändert, bevor die Ansicht geändert wird. Meine Frage ist, wie kann ich den Code zum Laufen bringen und nachdem er fertig ist, den Übergang zum Feuer bringen? Hier ist das, was ich bisher:Führen Sie einen Code vor einem Übergang, nachdem ich eine Taste in swift

@IBAction func onLogoutClick(sender: AnyObject) { 
    //clear all url chache 
    NSURLCache.sharedURLCache().removeAllCachedResponses() 
    //null out everything for logout 
    email = "" 
    password = "" 
    self.loginInformation.setObject(self.email, forKey: "email") 
    self.loginInformation.setObject(self.password, forKey: "password") 
    self.loginInformation.synchronize() 
    //self.view = LoginView 
} 
+2

Entfernen Sie die Aktion von der Taste in IB und dann einen Übergang zwischen dem UIViewController Objekt und Ihrer nächsten Szene erstellen. Sie können dann 'performSegueWithIdentifier' in Ihrer' @ IBAction' Funktion verwenden. Der andere Ansatz besteht darin, die '@ IBAction' Methode loszuwerden und' prepareForSegueWithIdentifier' zu implementieren. – Paulw11

+0

@ Paulw11 Könntest du das als Antwort verwenden, damit ich dir dafür Anerkennung geben kann. Danke für deine Hilfe und es hat perfekt funktioniert – MNM

Antwort

4

Sie haben ein paar Optionen;

Die erste besteht darin, die Aktion von der Schaltfläche in IB zu entfernen und dann einen Übergang zwischen dem UIViewController-Objekt und Ihrer nächsten Szene zu erstellen;

@IBAction func onLogoutClick(sender: AnyObject) { 
    //clear all url chache 
    NSURLCache.sharedURLCache().removeAllCachedResponses() 
    //null out everything for logout 
    email = "" 
    password = "" 
    self.loginInformation.setObject(self.email, forKey: "email") 
    self.loginInformation.setObject(self.password, forKey: "password") 
    self.loginInformation.synchronize() 

    self.performSegueWithIdentifier("logoutSegue",sender: self) 
} 

oder Sie können die @IBAction Methode loszuwerden und implementieren prepareForSegueWithIdentifier

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if segue.identifier == "logoutSegue" { 
     //clear all url chache 
     NSURLCache.sharedURLCache().removeAllCachedResponses() 
     //null out everything for logout 
     email = "" 
     password = "" 
     self.loginInformation.setObject(self.email, forKey: "email") 
     self.loginInformation.setObject(self.password, forKey: "password") 
     self.loginInformation.synchronize() 
    } 
} 
1

Ihrer Ansicht Controller können Sie implementieren:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "Segue identifier set in storyboard") { 
     // Put your code here or call onLogoutClick(null) 
    } 
}