2016-10-06 3 views
-2

Ich habe eine einfache Navigationshierarchie, die zwei Ansichten hat, zwischen denen sie geht. Ich wollte eine benutzerdefinierte Navigationsleiste, also habe ich die Standardnavigation ausgeblendet, und ich habe eine Containeransicht implementiert, die zwischen den beiden Ansichten in der Navigationshierarchie geteilt wird.Wie teilt man eine Ansicht über eine Navigationshierarchie ohne Animation?

Alles funktioniert so, wie ich es möchte, außer wenn ich in die untere oder höhere Ansicht gehe, erscheint die obere Leiste, gleitet weg und erscheint wieder in der neuen Ansicht. Ich möchte, dass es stationär erscheint, wenn ich andere Ansichten in der Hierarchie verschiebe.

Gibt es eine einfache Möglichkeit, dies zu tun? Oder sollte ich meine benutzerdefinierte freigegebene Containeransicht löschen und versuchen, dies mit der Navigationsleiste (die ich derzeit "ausgeblendet" habe) zu arbeiten?

+0

Es scheint die beste Art und Weise zu tun, was ich versuche, die Kugel zu tun wäre, nur zu beißen und lernen, wie die Standard-Navigation Controller anpassen (ändert es Höhe ist und benutzerdefinierte Schaltflächen hinzufügen). Jetzt werde ich jedoch versuchen, meine App mit mehreren überlappenden Containeransichten zu realisieren, die ich auf und neben dem Bildschirm verschieben kann, denn solange dies nicht zu unvorhergesehenen neuen Problemen führt, ist es ein Ansatz, den ich bereits sehr gut kenne und werde das Aussehen bekommen, das ich will. – PlateReverb

Antwort

1

Ich musste dies für einen Kunden einmal tun. Die Art, wie wir es gemacht haben, war, wie Sie sagten, einen umfassenden View-Controller, der eine Containeransicht enthielt. Innerhalb dieser Containeransicht haben wir eine UINavigationController eingebettet und würden UIViewController s manuell auf seinen Navigationsstapel setzen. Natürlich wollen Sie die Navigationsleiste der UINavigationController ausblenden.

Es hört sich so an, als ob Sie dies implementiert haben, aber stattdessen haben Sie einfach einen einfachen alten View-Controller in Ihren benutzerdefinierten Navigations-Controller eingebettet und dann zu einem anderen View-Controller, der ebenfalls in den benutzerdefinierten View-Controller eingebettet ist. Im Idealfall möchten Sie eine Instanz dieses benutzerdefinierten Nav-Controllers mit einem eingebetteten UINavigationController. Ich glaube, dass Sie alle View-Controller-Übergänge programmgesteuert durchführen müssen.

Meinung: Persönlich würde ich gegen tun dies zu empfehlen. Ich glaube, dass sich eine App wie eine Erweiterung des Betriebssystems anfühlen sollte. Ein Benutzer sollte fühlen, dass es ein Teil ihres Telefons ist. Wenn Sie die native Navigationsleiste verwenden, verringert sich auch der Aufwand, den ein Benutzer zum Verständnis Ihrer App benötigt.

Ich weiß, dass Sie denken "aber es ist nur eine Navigationsleiste", aber wir sprechen über die gleichen Leute, die eine App möglicherweise deinstallieren, wenn es mehr als 2,5 dauert zu laden.

+0

Ich habe eine normale 'UINavigationController' Setup zwischen 2 VCs. Jeder VC enthält eine eingebettete Containeransicht der gleichen Größe, die über eingebettete Segmente mit demselben VC verbunden ist. Ich ging diese Route hinunter, weil ich nicht wusste, wie man die Größe anpasst und Knöpfe zur Standardnavigationsleiste hinzufügt, und bis jetzt funktioniert es genau, wie ich will, außer ich will nicht, dass es reanimate, wenn man nach oben und unten segelt der Nav-Stapel. Was die Ästhetik angeht, ist der einzige Unterschied zwischen meiner Container-Ansicht "Quasi-Nav-Bar" und der nativen Nav-Leiste, dass sie nur etwas kleiner ist. – PlateReverb

+0

Wo ist dein Code zum Ausblenden der Navbar? @PlateReverb – Zolnoor

+0

In beiden View-Controller-Klassen – PlateReverb

1

wollte ich eine angepasste Navigationsleiste, so dass ich die eine Standard-

versteckt, dass Ihr Fehler ist. Um eine benutzerdefinierte Navigationsleiste in einer UINavigationController-Schnittstelle zu erhalten, müssen Sie sie mit init(navigationBarClass:toolbarClass:) initialisieren. Jetzt verwendet der integrierte Navigationscontroller Ihre Navigationsleiste! Und von da an wird alles gut werden.

https://developer.apple.com/reference/uikit/uinavigationcontroller/1621866-init

+0

Meine "angepasste Navigationsleiste" ist eigentlich nur eine separate View innerhalb eines View-Controllers, der zwischen den verschiedenen Ansichten des Nav-Stacks über separate eingebettete Container-Ansichten auf Layer-VC geteilt wird. – PlateReverb

+0

Wo sollte diese Initialisierung liegen? Ist es möglich, eine Container-Ansicht oder den View-Controller, mit dem eine eingebettete Verbindung besteht, als Navigationsleiste zu initialisieren? Oder müsste ich auf eine andere Weise eine benutzerdefinierte Navigationsleiste erstellen? – PlateReverb

Verwandte Themen