Verbergen des BackButtonTitles in einer NavigationStack

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verbergen des BackButtonTitles in einer NavigationStack

    Hallo,

    ich möchte backButtonTitle in einer View verbergen. Dieses ist unter Verwendung von NavigationLinks kein Problem.

    Quellcode

    1. extension UINavigationController {
    2. open override func viewWillLayoutSubviews() {
    3. navigationBar.topItem?.backButtonDisplayMode = .minimal
    4. }
    5. }

    Nun tritt jedoch folgendes Problem auf: Wenn ein `NavigationStack` verwendet wird und programmatisch mehrere View den PathArray hinzugefügt werden, wird bei der letzten hinzugefügten View der backButtonTitle wieder angezeigt. Ich habe schon probiert dieses Problem mit `Introspect` zu erschlagen, dass funktioniert leider auch nicht.


    Quellcode

    1. .introspectNavigationController { navController in
    2. navController.navigationBar.topItem?.backButtonDisplayMode = .minimal
    3. }


    Hinweis:

    - Das man den BackButton ausblenden und custom setzen kann, ist mir klar. Dies ist allerdings keine adäquate Lösung, finde ich.
    - In dem View, der in der View-Hierarchy unter dem anzuzeigenden View liegt, spontan den NavigationTitle auf leer zusetzen, ist auch keine praktikabler Weg.

    Es geht mir um eine Lösung, die das App-Wide den BackButtonTitle abschaltet, ohne das im einzelnen TargetView Änderungen am Code vorgenommen werden müssen.
    Kurz: der Code aus dem ersten Bespiel in funktionierend in einem NavigationStack mit programmatischer Navigation über mehrere Ebenen in einem Schritt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 322 ()

  • Ich verstehe aktuell nur Bahnhof…
    aber ich vermute, du bist in SwiftUI unterwegs und willst das Problem mit UIKit lösen. Ausserdem sagt mir meine Kristallkugel, dass du den automatisch generierten Back Button loshaben willst…
    … falls ja, nimm doch einfach den Befehl von SwiftUI um den auszublenden! Oder bin ich hier mit meiner Kristallkugel auf dem falschen Dampfer?
  • Ich verstehe aktuell nur Bahnhof…

    eventuell hilft dir da der Titel des Postes weiter:
    Verbergen des BackButtonTitles in einer NavigationStack

    dieses wird erreicht, indem man > navigationBar.topItem?.backButtonDisplayMode = .minimal< setzt.

    Wolf: aber ich vermute, du bist in SwiftUI unterwegs

    > Es geht hier um einen `NavigationStack`, da es diesen NUR in SwiftUI gibt, wird es sich auch ohne Vermutung um SwiftUI handeln. :)

    Wolf: ... willst das Problem mit UIKit lösen.

    In SwiftUI baut auf UIKit auf. Eine Vielzahl von Eigenschaften können nicht direkt in SwiftUI setzen. Es ist notwendig den UIKit-Layer anzusprechen, um gewisse Parameter, wie zum Beispiel den >.backButtonDisplayMode<, zu setzen. Code siehe oben.

    Wolf: falls ja, nimm doch einfach den Befehl von SwiftUI um den auszublenden!

    Zitat: > Das man den BackButton ausblenden und custom setzen kann, ist mir klar. <
    Ich habe explizit geschrieben, dass mir dieser Weg bekannt ist:
    Und auch, dass er nicht das gewünschte Resultat bringt, denn ich möchte ihn nicht ausblenden, sondern den BackButtonTitle auf hidden setzen, App-Wide. Wie mehrfach in meinem Post, als auch im Titel beschrieben, geht es NICHT um den BackButton, sondern um die Anzeige des BackButtonTitles!

    Das hier ist dann der Bahnhof:
    Zitat:
    > Wenn ein `NavigationStack` verwendet wird und programmatisch mehrere Views dem PathArray hinzugefügt werden, wird bei dem letzten hinzugefügten View der backButtonTitle wieder angezeigt. <

    Dieses Verhalten widerspricht dem gesetzten Parameter:

    Quellcode

    1. navigationBar.topItem?.backButtonDisplayMode = .minimal
    Genau das ist das Problem :)