Swift - Jak ukryć przycisk powrotu w elemencie nawigacyjnym?


103

W tej chwili mam dwa kontrolery widoku. Mój problem polega na tym, że nie wiem, jak ukryć przycisk Wstecz po przejściu do drugiego kontrolera widoku. Większość odniesień, które znalazłem, znajduje się w Objective-C. Jak to zakodować w Swift?

Ukryj kod przycisku Wstecz w Objective-C

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

Odpowiedzi:


366

Zgodnie z dokumentacją dla UINavigationItem:

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

30
złośliwość jest za darmo.
Greg,

58
To może straszyć @ Paulw11, ale zwykły fakt jest wpisanie „Swift przycisk Strone” w Google i przyjście tutaj - podobnie jak ja po prostu nie - jest mnóstwo szybciej niż orki przez ryz tekstu w oficjalnej dokumentacji.
Mama Josepha Beuysa

4
O ile nazwa przycisku wstecz jest zdefiniowana w pierwszym kontrolerze widoku, warto zauważyć, że kod służący do jej ukrycia musi być zaimplementowany w drugim kontrolerze widoku (tym, który pokazuje przycisk).
XLE_22

38

Jeśli używasz UITabBarController:

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

To samo dotyczy mnie, ale chciałbym zrozumieć, dlaczego. Czy ktoś wie, jaka jest różnica między przyjętą odpowiedzią a takim podejściem? Jedyne, co przychodzi mi do głowy, to model dziedziczenia a statyczna wersja paska nawigacji.
Helmut Granda

1
@HelmutGranda Jeśli zauważysz, że Bruno używa kontrolera paska zakładek, to jest różnica. W przypadku zaakceptowanych odpowiedzi VC jest prawdopodobnie osadzony w kontrolerze nawigacji.
cloudcal

@cloudcal Nie używam tabBar, ale obie odpowiedzi zadziałały. Obaj ukryli przycisk Wstecz. Pomyślałem, że zachowywałyby się inaczej, gdyby na ekranie był kontroler viewController, a potem chciałem ukryć przycisk Wstecz. Znowu obaj zachowywali się tak samo. Nie mogłem znaleźć między nimi żadnej różnicy. Mówię, że odpowiedź Bruno jest nieprawidłowa. Raczej dla czystego navigationController nie robi różnicy. Nie próbowałem tabBarController
Honey

20

Szybki

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

Oczywiste jest, że navigationItem.hidesBackButton = true to właściwa odpowiedź. Jeśli są lewe przyciski, co może mieć miejsce, jest to zdecydowanie właściwa odpowiedź i należy ją uznać za bardziej kompletną.
truedat101

self.navigationItem.hidesBackButton = trueDziała zgodnie z oczekiwaniami.
Shahabuddin Vansiwala

9

Można to również znaleźć w dokumentacji klasy UINavigationController:

navigationItem.hidesBackButton = true


1

Możesz spróbować z poniższym kodem

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

To nie jest odpowiedź na to pytanie.
Boris Nikolic

0

Oto wersja odpowiedzi w

Szybki 5

że możesz go użyć z storyboardu:

// 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 }
    }
}

Każdy element nawigacyjny kontrolera widoku będzie miał tę nową właściwość w górnej sekcji inspektora atrybutów


0

To zadziałało dla mnie w Swift 5 jak urok, po prostu dodaj go do swojego widokuDidLoad ()

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

-4

wprowadź opis obrazu tutaj

Przejdź do inspektora atrybutów i odznacz opcję Pokaż pasek nawigacji, aby ukryć przycisk powrotu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.