2016-04-27 20 views
0

Wenn ich den Übergang einer Ansicht umkehren möchte, möchte ich einen bestimmten Code ausführen lassen. Dies ist anders als "viewdidload" oder "viewdidappear", weil ich nicht möchte, dass es beim ersten Start der App ausgeführt wird, da es mein erster View-Controller ist, aber nur, wenn ich aus einer anderen Ansicht zurückkomme.Wie führe ich bestimmten Code aus, wenn ich zu einer Ansicht zurückwechsle swift

Wie gehe ich vor?

Danke.

Antwort

0

Sie sollten einen Delegierten für diese Art von Sache verwenden, hier ist der erste tutorial i saw on google about it, aber google für einige andere. Die Delegierung ist ein Schlüsselcodierungsmuster, über das alle iOS-Entwickler Bescheid wissen sollten und wann sie verwendet werden sollten.

In Ihrem Fall wird Ihr erster View-Controller ein Delegierter des zweiten sein, der es dem zweiten VC ermöglicht, Methoden auf dem ersten VC auszuführen, wenn er es für richtig hält, und für diesen Fall würde ich vor dem zweiten annehmen vc geht zurück auf die ersten

0

der einfachste Weg, um etwas boolean propery zu halten ist (zB Bool firstAppear) initialisieren es dann mit wahrer in viewDidLoad Verfahren, und dann in viewDidAppear:

if firstAppear { 
    firstAppear = false 
    return 
} 
0

Sie viewWillAppear und viewDidAppear verwenden können Methoden. Sie haben nicht nur einmal, sondern jedes Mal Ihren View-Controller aufgerufen. viewDidLoad aufgerufen nur einmal nach Ansicht Controller laden

+0

Vielen Dank für das – Khoury

0

Betrachten wir zwei Viewcontrollers VC1 und VC2. Sie befinden sich jetzt in VC2 und versuchen, zurück zu navigieren. in ViewWillDisappear von VC2 versuchen Sie diesen Code.

let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setBool(true, forKey: "mykey") 

Und jetzt navigieren Sie zurück zu VC1. In VC1 ViewWillAppear diesen Code

let defaults = NSUserDefaults.standardUserDefaults() 
let mykey = defaults.boolForKey("mykey") 
    if mykey { 
     defaults.setBool(false, forKey: "mykey") 
     //execute your code here 
    } 
+0

Diese funktioniert nicht für mich? – Khoury

0

Zuerst verwenden Sie dies zum Beispiel in der AppDelegate einstellen:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
... 
    let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched") 
    if alreadyLaunched { 
     print("This is not the first app launch.") 
    } 
    else { 
     print("First app launch, setting NSUserDefault.") 
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "alreadyLaunched") 
    } 
} 

Dann überprüfen Sie, wo immer Sie wollen:

let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched") 
if alreadyLaunched { 
    print("This is not the first app launch.") 
}