2017-08-03 2 views
0

Szenario:UITabBarController mit gleichen Viewcontroller in verschiedenen Registern

  1. Wir haben eine Tab-Leiste Controller in der App.

  2. Nur ein View-Controller hat einen anderen Farbstil für die Statusleiste, nennen wir diesen View-Controller VC1.

  3. So habe ich hinzugefügt Logik in VC1, Set viewWillAppear die gewünschte StatusBar Farbe, den Standard StatusBar Farbe viewWillDisappear zurückgesetzt.

Ausgabe: Die meiste Zeit, verschiedene Registerkarten unterschiedliche Ansicht-Controller haben, ist dies kein Problem der Statusleiste Farbwechsel.

Aber in einem Fall, werde ich VC1 in zwei Registerkarten angezeigt haben, in diesem Fall , wenn ich wechseln Tab, viewWillAppear bekam erste genannt, was bedeutet, das Reset StatusBar Stilspäter genannt wurde, also nach dem Wechseln der Registerkarte, ist die Statusleiste Farbe falsch.

Gibt es eine Möglichkeit, dies zu lösen? Es scheint, dass der Lebenszyklus des View-Controllers in diesem Szenario falsch ist.

Antwort

0

Betrachten Sie UITabBarControllerDelegate. Auf diese Weise können Sie Maßnahmen ergreifen, je nachdem, welche Registerkarte ausgewählt ist (z. B. die Farbe der Statistikleiste ändern), anstatt dies innerhalb der VC zu tun.

Sie verwenden das UITabBarControllerDelegate Protokoll, wenn Sie das Verhalten einer Tab-Leiste auf erweitern möchten. Insbesondere können Sie es verwenden, um bestimmen, ob bestimmte Registerkarten ausgewählt werden, um Aktionen nach einer Registerkarte ausgewählt ist, oder Aktionen vor oder nach dem Benutzer die Reihenfolge der Registerkarten anpassen ausführt.

ref: https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate

+0

ich Ihre Idee zu bekommen, sollte es funktionieren, aber ich habe nur die Logik spezifisch auf den View-Controller, da der Stil nicht nur abhängig von Tab zu machen. –

Verwandte Themen