2016-04-07 23 views
0

Ich habe zwei ViewControllers, StartVC und MainVC. Wenn App startet, benutze ich eine Modal-Sequenz, um von StartVC zu MainVC zu wechseln.Swift, Modal Segue und ViewController Ausgabe

self.performSegueWithIdentifier("StartToMain", sender: self) 

MainVC zeigt dann eine Karte, lädt Benutzer-Standort auf der Karte zeigt und zoomt hinein und schafft einige Anmerkungen auf es und zeigt ein AdMob-Banner. Alles funktioniert gut.

dann, wenn der Benutzer eine Zurück-Taste tippt, wird das Segue mit entlassen:

self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil) 

Nun, wenn Benutzer auf eine Schaltfläche tippt und die modale segue wieder gefeuert und Anwender erhält auf MainVC wieder wird die Karte immer noch zeigt Benutzerstandort, zoomt jedoch nicht heran, lädt keine Anmerkungen, stellt keine Region ein und admob banner wird nicht geladen.

Ich bin davon verblüfft. Ich habe bereits überprüft, dass die ViewDidLoad und ViewDidAppear für MainVC auch das zweite Mal feuern und die Codeausführung sogar die Funktionen erreicht, die in map etc zoomen sollen, aber es wird nicht wirksam. Hat jemand eine Idee, was könnte das verursachen?

Ich sollte auch erwähnen, dass das zweite Mal Benutzer MainVC wird, unter Fehler von AdMob geworfen versucht, eine Interstitial-Anzeige angezeigt werden:

Warnung: Versuch < GADInterstitialViewController vorstellen: 0x139b07e20> auf < myApp .MainVC: 0x135672f20> deren View nicht in der Fensterhierarchie ist!

Darüber hinaus befindet sich derzeit der Funktionsaufruf für die gesamte fehlende Funktionalität in der locationManager didUpdateLocations-Methode. Wenn ich es zum Beispiel auf viewDidAppear verschiebe, funktioniert es.

+0

Verwenden Sie einen Navigationscontroller, um dies zu tun? Oder ist es nur ein View-Controller und ein anderer? Und präsentierst du modal oder mit Push? – brandonscript

+0

Ich benutze keine Navigation und ich präsentiere modal, weil ich den horizontalen Flip-Effekt mag. – Kashif

+0

Hrm ... Sie könnten versuchen, in einen Nav-Controller einzubetten, nur um zu sehen, ob sich die Dinge besser verhalten. Meine Vermutung ist, dass es etwas mit dem Verweis auf "presentingViewController" zu tun hat, der für mich bestenfalls unzuverlässig ist. – brandonscript

Antwort

0

Einige Dinge, die Sie versuchen können.

Erstens: Stellen Sie sicher, dass Sie alle Navigation in der ViewDidAppear-Methode ausführen. In ViewDidLoad- oder ViewWillAppear-Methoden sollten Sie keine andere VC aufrufen.

Zweitens: Sie können ein Abwicklungssegment verwenden, um zur StartVC zu navigieren. Erstellen Sie den Abwickler segue auf dem Storyboard und dann programmatisch nennen wie folgt aus:

self.performSegueWithIdentifier("UnwindSegue", sender: self)

You can find more info about unwind segues here

Hoffe, es hilft.

Verwandte Themen