2016-03-23 17 views
1

Also ich habe einen Tab-Leiste-Controller und wenn ich in der zweiten Registerkarte wähle bringt es mich zu einem Tabellenansicht-Controller. Ich habe es so eingerichtet, dass wenn die viewWillAppear animiert die Zellen in. Das Problem, das ich habe, ist, dass das erste Mal, wenn ich in diese Ansicht gehe, alles stationär ist, aber wenn ich zu einem anderen Tab gehe und zurückkomme, alles perfekt animiert.Swift viewWillAppear wird nicht zum ersten Mal mitTabBarController aufgerufen

Wie kann ich animieren, wenn ich zum ersten Mal auf den Tab gehe?

Ich habe keinen Code hinzugefügt, weil ich nicht denke, dass es helfen wird, die Frage zu beantworten.

Bearbeiten * Ich kann so oft wie ich möchte auf den Tab gehen und es wird jedes Mal animieren, aber wird nie beim ersten Laden der App animieren.

+0

der ViewWillAppear wird jedes Mal, wenn Sie auf diesen Bildschirm gehen. Cal als die einzelnen Registerkarte enthält einen Navigationscontroller und jeder Navigationscontroller enthält Viewcontrollers ... so aus meiner Sicht sollte es gut funktionieren. – sourav

+0

@sourav Das waren auch meine Gedanken, aber nach dem Testen auf einem iPhone und dem Simulator funktioniert es jedes Mal einwandfrei, außer wenn ich das erste Mal daran gehe. – Dallas

+0

Legen Sie den Delegaten und die Datenquelle von tableView fest, nachdem viewdid die Tabelle nach viewdidload geladen und erneut geladen hat. – sourav

Antwort

1

Ich hatte das gleiche Problem. Versuchte die unten in "ViewDidAppear" und es funktioniert.

+0

Das hat teilweise funktioniert, der Fehler, den ich damit habe, ist es zeigt die Daten für einen Bruchteil einer Sekunde einmütig, und animiert dann in. Ich habe dies durch Hinzufügen von "tableView.hidden = true" in meiner ViewDidLoad und dann beim Aufruf behoben Das oben in viewWillAppear habe ich auch "tableView.hidden = false" eingefügt. Mit ein wenig Änderung funktionierte es wie ein Zauber, danke eine Tonne. – Dallas

1

Ich hatte ein sehr ähnliches Problem mit ViewDidAppear. Mein Problem war, dass ich die viewDidAppear Funktion in der TabBarController anrief, um einige Sachen zu tun, aber vergaß, super.viewDidAppear (wahr) in dieser Methode zu nennen. Aus diesem Grund wurde der viewDidAppear des Kindes nicht aufgerufen. Nachdem ich es hinzugefügt habe, funktioniert alles wie ein Zauber.

Fügen Sie also super.viewDidAppear(true) oder in Ihrem Fall super.viewWillAppear(true) im TabBarController hinzu. Vielleicht hilft es

Verwandte Themen