Ich habe eine Tab-Leiste mit einem Navigations-Controller in einer der Registerkarten. Zur Zeit zeigt die Grundansicht des Navigations-Controllers die Navigationsleiste nicht an und animiert sie mit
in die Subviews %Vor%und
%Vor% Aber natürlich ändert das Wechseln der Tabs die viewWillAppear
-Funktion und wenn ich zurück zur Stammansicht gehe, wird die Navigationsleiste weggerutscht, anstatt einfach nicht da zu sein.
Gibt es eine Möglichkeit, die Navigationsleiste in der Stammansicht zu verbergen, ohne sie zu animieren, außer wenn sie aus einer Unteransicht des Navigationsstapels erscheint?
Der Parameter (BOOL)animated
auf viewWillAppear:animated
. Wenn Tabs geändert werden, wird es als NO
angezeigt, da die Animation sofort erfolgt. Auf der anderen Seite, wenn es mit animated:YES
vom Navigations-Stack gepushed oder gepoppt wird, kommt es als YES
.
Obwohl dies wie ein Hack aussieht, ist es der richtige Weg: Sie müssen nicht herausfinden, wer der Anrufer war, sondern sich darauf konzentrieren, dass wenn Ihr View-Controller animiert erscheint, Zeit bleibt mach deine eigenen Animationen , wenn nicht, schraube sie, zeige (oder versteckt in diesem Fall) alles sofort.
Versuchen Sie, die Leiste im Delegate des UINavigationControllers ein- oder auszublenden. navigationController: willShowViewController: animierte: Methode, je nachdem, ob der View-Controller angezeigt wird, ist Ihr Root-View-Controller.
Was ist, wenn Sie eine boolesche Variable in Ihrem Anwendungsdelegaten setzen und den entsprechenden Boolean in Subviews als 0 und in anderen Sichten als 1 setzen. Und in Ihrer Ansicht wird, je nach dem Wert Ihrer Variablen, die Animation eingestellt.
Tags und Links ios cocoa-touch uinavigationcontroller uitabbarcontroller