Statusbar ausblenden wenn VC von ModalFormSheet -> Fullscreen präsentiert wird

  • Statusbar ausblenden wenn VC von ModalFormSheet -> Fullscreen präsentiert wird

    Hallo,

    ich habe einen ViewController der Dokumente anzeigt (PDF's, Bilder, etc.) diesen möchte ich an verschiedenen Stellen in meiner App nutzen.
    Immer wenn ein Dokument angezeigt wird will ich die Statusbar ausblenden. In der PLIST steht ViewController Statusbar Appearance auf YES.
    In meinem DocumentViewer sind folgende Methoden implementiert:

    Quellcode

    1. - (BOOL)prefersStatusBarHidden {
    2. return YES;
    3. }
    4. - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
    5. return UIStatusBarAnimationSlide;
    6. }
    7. - (UIStatusBarStyle)preferredStatusBarStyle {
    8. return UIStatusBarStyleLightContent;
    9. }

    Die App hat als RootViewController einen TabBarController.
    Wenn ich den DocumentViewer nun direkt vom TabBarController presenten lasse dann geht alles wie gewünscht, die Statusbar wird ausgeblendet und das Document wird als ModalViewController Fullscreen dargestellt.

    Nun habe ich folgenden Anwendungsfall in dem es nicht funktioniert:
    Mein TabBarController präsentiert einen VC allerdings nicht Fullscreen sondern als PageSheet oder FormSheet. Nun möchte ich in diesem wieder ein Document in einem ModalViewcontroller (wieder Fullscreen) anzeigen.
    Der Controller wird wie erwartet Fullscreen angezeigt, jedoch bleibt die Statusleiste unverändert stehen.. die oben genannten Methoden werden nicht aufgerufen..
    verschiedene aufrufe von "setNeedsStatusBarAppearanceUpdate" vor/nach dem präsentieren oder auch in viewWillAppear haben keinen erfolg gebracht..

    Es muss doch möglich sein die Statusbar auch in diesem Fall auszublenden..

    Danke schonmal
  • Es kann sein das der NavigationController der da zwischen ist die aufrufe abfängt. Implementier mal die Methoden in einer Ableitung vom NavigationController und verwende den. Ich hoffe das hilft dir weiter.

    Quellcode

    1. - (UIStatusBarStyle)preferredStatusBarStyle
    2. {
    3. UIViewController *top = self.topViewController;
    4. return [top preferredStatusBarStyle];
    5. }
    6. - (BOOL)prefersStatusBarHidden
    7. {
    8. UIViewController *top = self.topViewController;
    9. return [top prefersStatusBarHidden];
    10. }
    11. - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
    12. {
    13. UIViewController *top = self.topViewController;
    14. return [top preferredStatusBarUpdateAnimation];
    15. }
    Alles anzeigen
  • Danke für deine Antwort.

    Leider hat es nicht geholfen...

    Von den 3 Methoden wird lediglich die "- (BOOL)prefersStatusBarHidden" aufgerufen, allerdings dann wenn der Navigationcontroller präsentiert wird... nichtmehr wenn ich ein Item aus dem NavigationController ein Element aufrufe/VC präsentiere...