2016-05-27 9 views
3

私は別のビューに移動するボタンを持っています。私はsegueが動く前にいくつかのコードを実行したい。私が直面している問題は、コードが終了する前に、セグが他のページに移動することです。したがって、ビューが変更される前に、Userのデフォルト値が変更されることはありません。 私の質問は、どのようにコードを実行させ、その終了後に発火させるようにすることですか?ここ は、私がこれまで持っているものです:すぐにボタンを押した後、セグの前にコードを実行してください

あなたが実装することができ、あなたのビューコントローラで
@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

を実装することができます。 '@ IBAction'関数で' performSegueWithIdentifier'を使うことができます。もう一つのアプローチは、 '@ IBAction'メソッドを取り除き、' prepareForSegueWithIdentifier'を実装することです。 – Paulw11

+0

@ Paulw11これを答えに入れることができますか?あなたの助けてくれてありがとう、それは完璧に働いた – MNM

答えて

4

あなたはオプションのカップルを持っています。

最初に、IBのボタンからアクションを削除し、UIViewControllerオブジェクトと次のシーンの間にセグを作成します。

@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) 
} 

か、@IBAction方法を取り除くとIBでボタンからアクションを削除し、その後のUIViewControllerオブジェクトとあなたの次のシーン間のセグエを作成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

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