2016-04-20 14 views
1

Auf meiner Anwendung habe ich vier View-Controller (VC):Navigation zwischen View-Controller

  • HOME
  • NACHRICHTEN
  • PROFIL
  • SETTINGS

Auf jeder VC, einen opaker Balken unten mit vier Balken-Schaltflächen für jede VC (Home, Nachrichten, Profil, Einstellungen).

Wenn ich auf einen Balkenknopfeintrag tippe, verwalte ich die Navigation mit einem Übergang (Show) und lädt den ausgewählten VC.

Ich möchte einen Weg finden, nicht wieder ein VC laden bereits einmal geladen. Zum Beispiel:

  • Die App
  • HOME VC gestartet wird geladen und erscheint
  • Benutzer auf PROFIL ist
  • PROFIL VC tippt geladen und erscheint
  • Benutzer auf HOME HOME
  • Taps VC erscheint ohne Aufruf von viewDidLoad Methode, weil es bereits vor vier Schritten
geladen wurde

Ich habe versucht, mit allen Arten von Segmenten (Show, Gegenwart modally, etc.) und mit presentViewController Methode, aber jedes Mal die viewDidLoad Methode aufgerufen wird.

Gibt es eine einfache Möglichkeit, dies zu tun, oder muss ich dies mit einem Boolean verwalten, um anzuzeigen, dass die Ansicht bereits geladen wurde?

Ich möchte ein Menü wie WhatsApp Anwendung hat zum Beispiel.

Antwort

3

WhatsApp verwendet eine Tableiste am unteren Rand. Benutzt du Toolbar? ViewDidLoad wird nur einmal pro Ansicht ausgeführt, es sei denn, Sie entladen die Ansicht aus dem Speicher.

Der einfachste Weg, um Ihre App anzupassen, ist nur eine Tab Bar-Controller in Ihrer Anwendung hinzufügen und dann die 2 automatisch hinzugefügt Ansicht-Controller löschen und eine Beziehung gesetzt (wie ein Segue, es ist unterhalb Segue-Typen) zwischen jedem View-Controller und dem Tab-Bar-Controller. Um die Symbole zu ändern, ändern Sie sie in der Tab Bar Controller Ansicht. Dann funktionieren segues automatisch wie in WhatsApp. :)

+0

Genau das, was ich wollte, und wirklich einfach in meinem eigentlichen Projekt zu implementieren. Vielen Dank! – Thomi

Verwandte Themen