Wie zu bestimmen, ob ein ViewController ist die top-level-oder nicht?
Ich habe eine tab-Leiste, angetrieben app.
Die app hat einige view-Controller, die auf einander gestapelt der üblichen Weise.
Einige dieser view-Controller können top-level - Bedeutung instanziiert direkt aus der tab bar controller. Diejenigen, die nicht über einen "zurück" - button in der navigation bar.
Einige von diesen genannt werden kann, wird an vielen stellen in der call-stack. Das heißt, Sie könnte als von einigen anderen view-controller und nicht direkt aus der tab-Leiste.
Ich bin auf der Suche nach einer intelligenten Möglichkeit, um zu bestimmen, Programm, ob die aktuelle view-controller verfügt derzeit über eine "zurück" - button in der nav-Leiste oder nicht.
(Falls doch nicht, dann möchte ich an einige andere bar-Element an dieser Stelle.)
Jeder Hinweis ist willkommen. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut... von dem, was du beschreibst, kann ich verstehen, dass Sie eine
UITabBarController
mit einer Liste von view-controller in jedem tab und jedem view-controller, ein navigation-controller, die weiter führt zu neuen Ansichten. Und Sie sind daran interessiert, herauszufinden, ob eine bestimmte Ansicht, ist der erste Blick-oder den zweiten, und so weiter.Interessant, es ist ein Weg, dies zu tun. Der navigation controller ist im Grunde eine
viewController
array mit Blick zum index Hinzugefügt, der navigationController. Der erste Blick wird bei index 0. Wenn Sie einepushViewController
, dienewViewController
platziert wird bei index 1.Nur überprüfen für den index zählen der
self.navigationController
dieser bestimmten Ansicht. Wenn Sie größer als 1 ist, können Sie sicher sein, dass es nicht der erste Blick.Können Sie auch überprüfen, für die
backBarButtonItem
Eigenschaft, aber dann wieder, es kann möglicherweise nicht erforderlich sein. DieviewControllers
array zählen tun sollte.rootViewController
. Wenn Sie einen navigationController, jede Ansicht, die intern vergeben wird an jeder index-position des stack. Dies ist eine Eigenschaft der navigationController, die Sie einbetten in jedem tab anzeigen. Das hat nichts zu tun mit dertabBarController
.Könnten Sie Fragen Sie Ihren view-controller, für die es
-navigationController
, Fragen Sie den navigation-controller für seine-viewControllers
- Stacks, und sehen, was die-count
von dieser Stapel ist.Den aktuell-Anzeige-view-controller ist das "Letzte" Element in den stack (index n-1). Die "zurück" - view-controller-zweiten-zum-letzten - (n-2 — n wird die Anzahl der Stapel). Also, wenn die Zählung der Stapel 1 ist, das heißt, Sie haben den Gipfel erreicht haben. Es gibt nichts in den Stapel zurück zu gehen, und keine zurück-Taste angezeigt werden.
Betrachten gerade der index des view-Controllers in der navigation-controller ist
viewControllers
array-Eigenschaft. Wenn es null ist, dann wird der view controller ist das top-controller (ohne die Schaltfläche "zurück").UINavigationController hat topViewController und visibleViewController Eigenschaften, die könnte dir helfen. Wenn Sie wollen einfach nur wissen, ob es eine Schaltfläche "zurück" oder nicht, können Sie überprüfen die backBarButtonItem Eigenschaft des UINavigationItem und sehen, ob es nicht null und nicht versteckt.
topViewController
undvisibleViewController
nicht unbedingt lassen Sie uns wissen Sie, wenn Sie an der Spitze des Stapels, wenn die view-controller-auf der Oberseite erscheint mehrmals im Stapel.