Swift - Wie verstecke ich die Zurück-Schaltfläche im Navigationselement?


102

Im Moment habe ich zwei View Controller. Mein Problem ist, dass ich nicht weiß, wie ich die Zurück-Schaltfläche nach dem Wechsel in den Second View Controller ausblenden kann. Meistens Referenzen, die ich in Ziel-C gefunden habe. Wie codiere ich es schnell?

Verstecke den Schaltflächencode in Ziel-c

[self.navigationItem setHidesBackButton:YES animated:YES];

Antworten:


365

Gemäß der Dokumentation für UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);

30
Die Snarkiness ist kostenlos.
Greg

57
Es könnte Sie bei Paulw11 erschrecken, aber die einfache Tatsache ist, dass Sie "Swift Hide Back Button" in Google eingeben und hierher kommen - wie ich es gerade getan habe - viel schneller als durch die Unmengen von Texten in der offiziellen Dokumentation zu pflügen.
Joseph Beuys 'Mutter

4
Während der Name der Zurück-Schaltfläche im ersten Ansichts-Controller definiert ist, kann es interessant sein zu bemerken, dass der Code zum Ausblenden im zweiten Ansichts-Controller implementiert werden muss (derjenige, der die Schaltfläche zeigt).
XLE_22

37

Falls Sie einen UITabBarController verwenden:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

Das gleiche gilt für mich, aber ich würde gerne verstehen warum. Weiß jemand, was der Unterschied zwischen der akzeptierten Antwort und diesem Ansatz ist? Das einzige, was mir einfällt, ist das Vererbungsmodell im Vergleich zu einer statischen Version der Navigationsleiste.
Helmut Granda

1
@HelmutGranda Wenn Sie feststellen, dass Bruno einen Tab Bar Controller verwendet, ist dies der Unterschied. Im Fall der akzeptierten Antworten ist der VC wahrscheinlich in einen Navigationscontroller eingebettet.
Cloudcal

@cloudcal Ich verwende keine TabBar, aber beide Antworten haben funktioniert. Beide versteckten den Zurück-Knopf. Ich dachte, sie würden sich anders verhalten, wenn der viewController auf dem Bildschirm angezeigt würde, und dann wollte ich die Zurück-Schaltfläche ausblenden. Wieder handelten beide gleich. Ich konnte keinen Unterschied zwischen ihnen feststellen. Ich sage, Brunos Antwort ist falsch. Vielmehr macht es für den reinen Navigationscontroller keinen Unterschied. Ich habe tabBarController
Honey

20

Schnell

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

Es ist klar, dass navigationItem.hidesBackButton = true die richtige Antwort ist. Wenn es linke Tasten gibt, was der Fall sein kann, ist dies definitiv die richtige Antwort und sollte als die vollständigere Antwort betrachtet werden.
truedat101

self.navigationItem.hidesBackButton = trueEs funktioniert wie erwartet.
Shahabuddin Vansiwala

9

Dies finden Sie auch in der Dokumentation zur UINavigationController-Klasse:

navigationItem.hidesBackButton = true

6

Setzen Sie es in die viewDidLoadMethode

navigationItem.hidesBackButton = true 

2

Sie können es mit dem folgenden Code versuchen

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

0

Hier ist eine Version der Antwort in

Swift 5

dass Sie es aus dem Storyboard verwenden können:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

Jedes Navigationselement eines Ansichtscontrollers verfügt über diese neue Eigenschaft im oberen Bereich des Attributinspektors


0

Das hat bei mir in Swift 5 wie ein Zauber funktioniert, füge es einfach deiner viewDidLoad () hinzu

self.navigationItem.setHidesBackButton(true, animated: true)

-4

Geben Sie hier die Bildbeschreibung ein

Gehen Sie zum Attributinspektor und deaktivieren Sie die Option Navigationsleiste anzeigen, um die Schaltfläche "Zurück" auszublenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.