Legen Sie die Navigationsleiste ausgeblendet fest, je nachdem, wie der View-Controller angezeigt wurde

8

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?

    
Josh 18.08.2011, 12:35
quelle

3 Antworten

14

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.

    
Can 25.08.2011, 01:26
quelle
3

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.

    
Anomie 20.08.2011 15:31
quelle
0

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.

    
Baby Groot 24.08.2011 12:26
quelle