So blenden Sie die Navigationsleiste auf dem ersten Bildschirm in Swift aus: Eine vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum das Ausblenden der Navigationsleiste für Anfänger eine Herausforderung ist

\n\n

Haben Sie schon einmal die Situation erlebt: Sie erstellen eine App, der erste Bildschirm soll wie eine Vollbild-Landingpage aussehen, ohne grauen Balken oben, aber auf dem zweiten Bildschirm wird die Navigationsleiste für die Navigation benötigt? Es scheint logisch, einfach navigationController?.isNavigationBarHidden = true in viewDidLoad zu schreiben. Aber dann beginnt die Magie: Die Navigationsleiste kann beim Zurückkehren von einem anderen Bildschirm wieder „auftauchen“, die Animation bricht ab oder sie wird gar nicht ausgeblendet.

\n\n

Dies ist eine der häufigsten Fragen auf Stack Overflow (das Thema „How to hide a navigation bar from first ViewController in Swift?“ hat tausende Aufrufe). In diesem Tutorial behandeln wir nicht nur die grundlegende Lösung, sondern auch die Feinheiten: wie man dies elegant, ohne Animationsfehler und an moderne iOS-Standards angepasst umsetzt. Wenn Sie nach einer zuverlässigen Methode suchen, um die Navigationsleiste auf dem ersten Bildschirm in Swift auszublenden, sind Sie hier richtig.

\n\n

Das Problem: Was passiert „unter der Haube“?

\n\n

Wenn Sie UINavigationController verwenden, verwaltet dieser die Navigationsleiste für alle untergeordneten Controller. Wenn Sie sie einfach in viewDidLoad des ersten ViewControllers ausblenden, kann die Eigenschaft beim Wechsel zum zweiten Bildschirm und Zurückkehren zurückgesetzt werden. Warum?

\n\n
    \n
  • viewDidLoad wird nur einmal aufgerufen – bei erneuter Anzeige des Bildschirms wird der Code nicht ausgeführt.
  • \n
  • UINavigationController synchronisiert die Leiste basierend auf dem letzten Controller im Stapel.
  • \n
  • Die Übergangsanimation kann den Zustand „verschlucken“, wenn keine animated-Parameter gesetzt werden.
  • \n
\n\n

Aber keine Sorge – die Lösung ist elegant und einfach. Lassen Sie uns den Code schreiben.

\n\n

Grundlegende Lösung: Navigationsleiste im ersten ViewController ausblenden

\n\n

Der direkteste Weg ist, die Methode viewWillAppear zu überschreiben. Warum gerade hier? Weil diese Methode jedes Mal vor dem Erscheinen des Bildschirms aufgerufen wird, im Gegensatz zu viewDidLoad. So wird die Navigationsleiste auch nach der Rückkehr von einem anderen Bildschirm wieder ausgeblendet.

\n\n

Schritt 1: Erstellen des ersten ViewControllers

\n\n

Angenommen, Sie haben einen FirstViewController, der der Root-Controller in einem UINavigationController ist.

\n\n
import UIKit\n\nclass FirstViewController: UIViewController {\n\n    override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        // Navigationsleiste ohne Animation ausblenden\n        navigationController?.setNavigationBarHidden(true, animated: animated)\n    }\n\n    override func viewWillDisappear(_ animated: Bool) {\n        super.viewWillDisappear(animated)\n        // Navigationsleiste beim Verlassen des Bildschirms wieder einblenden\n        navigationController?.setNavigationBarHidden(false, animated: animated)\n    }\n}
\n\n

Beachten Sie: Wir verwenden setNavigationBarHidden(_:animated:) mit dem Parameter animated. Wenn Sie true übergeben, wird die Navigationsleiste mit einer zum Übergang synchronisierten Animation ein-/ausgeblendet. Das sieht professionell aus.

\n\n

Schritt 2: Einrichten des zweiten Bildschirms

\n\n

Auf dem zweiten Bildschirm (SecondViewController) wird die Navigationsleiste standardmäßig angezeigt. Es ist kein zusätzlicher Code erforderlich – sie wird beim Übergang automatisch erscheinen.

\n\n

Schritt 3: Überprüfung im Interface Builder oder Code

\n\n

Stellen Sie sicher, dass Ihr UINavigationController korrekt konfiguriert ist. Wenn Sie Storyboard verwenden, überprüfen Sie, ob der erste Bildschirm FirstViewController ist. Wenn im Code:

\n\n
let navController = UINavigationController(rootViewController: FirstViewController())
\n\n

Fertig! Starten Sie die App – der erste Bildschirm wird ohne Navigationsleiste angezeigt, der zweite mit.

\n\n

Fortgeschrittene Techniken: Animation und SwiftUI

\n\n

Die grundlegende Lösung funktioniert, aber in realen Anwendungen

Blogs

Buchempfehlungen