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];
Mohammad Nurdin
źródło

Odpowiedzi:

366

Zgodnie z dokumentacją dla UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true)
Paulw11
źródło
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
}
Bruno Cunha
źródło
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
Marwen Doukh
źródło
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
Amiru Homushi
źródło
6

Umieść to w viewDidLoadmetodzie

navigationItem.hidesBackButton = true 
Harjeet Singh
źródło
1

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

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}
Dilip Jangid
źródło
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

Stoyan
źródło
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)
Matan
źródło
-4

wprowadź opis obrazu tutaj

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

neeraj sachdeva
źródło