Swift - Gezinme öğesinde geri düğmesi nasıl gizlenir?


103

Şu anda iki görüş kontrol cihazım var. Benim sorunum, ikinci görüntü denetleyicisine geçtikten sonra geri düğmesini nasıl gizleyeceğimi bilmiyorum. Bulduğum referansların çoğu Objective-C'de. Swift ile nasıl kodlayabilirim?

Objective-C'de geri düğmesi kodunu gizle

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

Yanıtlar:


367

Göre belgeler için UINavigationItem:

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

30
snarkiness ücretsizdir.
Greg

58
Bu Paulw11 @ korkutmak olabilir, ama düz gerçeği Google'da "Swift gizlemek geri düğmesine" yazıp buraya geliyor - Sadece yaptığım gibi - olduğu ton çabuk resmi belgelerinde metin reams aracılığıyla çiftçilik daha.
Joseph Beuys'un Annesi

4
Geri düğmesinin adı birinci görünüm denetleyicisinde tanımlanırken, onu gizleyecek kodun ikinci görünüm denetleyicisinde (düğmeyi gösteren) uygulanması gerektiğini fark etmek ilginç olabilir.
XLE_22

38

Bir kullanıyorsanız UITabBarController:

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

Benim için de aynı, ancak nedenini anlamak isterim. Kabul edilen cevap ile bu yaklaşım arasındaki farkın ne olduğunu bilen var mı? Aklıma gelen tek şey, kalıtım modeli ile gezinme çubuğunun statik bir sürümüdür.
Helmut Granda

1
@HelmutGranda Bruno'nun bir Sekme Çubuğu Denetleyicisi kullandığını fark ederseniz, fark budur. Kabul edilen cevaplar durumunda, VC muhtemelen bir gezinme denetleyicisine gömülüdür.
cloudcal

@cloudcal TabBar kullanmıyorum, ancak her iki yanıt da işe yaradı. İkisi de geri düğmesini sakladı. ViewController ekranda olsaydı farklı davranacaklarını düşündüm ve sonra geri düğmesini gizlemek istedim. Yine de ikisi de aynı şekilde davrandılar. Aralarında bir fark bulamadım. Bruno'nun cevabının yanlış olduğunu söylüyorum. Daha ziyade saf navigationController için bir fark yaratmaz. TabBarController'ı denemedim
Tatlım

20

Swift

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

Doğru yanıtın navigationItem.hidesBackButton = true olduğu açıktır. Durum olabilen sol düğmeler varsa, bu kesinlikle doğru yanıttır ve daha eksiksiz yanıt olarak düşünülmelidir.
truedat101

self.navigationItem.hidesBackButton = trueBeklendiği gibi çalışıyor.
Shahabuddin Vansiwala

9

Bu, UINavigationController sınıfı belgelerinde de bulunur:

navigationItem.hidesBackButton = true


0

Aşağıdaki kodu deneyebilirsiniz

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

Bu, bu sorunun cevabı değil.
Boris Nikolic

0

İşte cevabın bir versiyonu

Swift 5

film şeridinden kullanabileceğinizi:

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

Bir görünüm denetleyicisinin her gezinme öğesi, öznitelik denetçisinin üst bölümünde bu yeni özelliğe sahip olacaktır.


0

Bu benim için Swift 5'te bir cazibe gibi çalıştı, sadece viewDidLoad ()

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

-4

görüntü açıklamasını buraya girin

Nitelik denetçisine gidin ve geri düğmesini gizlemek için Gezinme Çubuğunu göster seçeneğinin işaretini kaldırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.