Gezinme çubuğu olmadan UINavigationController?


117

Evrensel bir uygulamam var ve iPad sürümünde UISplitViewControllerMail uygulamasına benzer bir arayüz oluşturmak için kullanıyorum .

Yeni Ayrıntı görünümlerini zorlarken sorun yaşıyordum, bu UINavigationControlleryüzden gerektiğinde görünümleri itip açabilmek için bir kullanmaya karar verdim . Ancak navigasyon görünümünü veya bir araç çubuğunu kullanmak istemiyorum. Ama ne yaparsam yapayım, gezinme çubuğunu gizleyemem.

IB'de "Gezinme Çubuğunu Gösterir" seçeneğinin işaretini kaldırmayı denedim ve ayrıca şunu ayarlamayı da denedim:

[self.navigationController setNavigationBarHidden:YES];

içinde viewDidLoad/ viewDidAppear/ viewWillAppear. Ayrıca itilecek görüşlerin her birinde denedim. Hiç birşey çalışmıyor.

Burada kaçırdığım bir şey mi var? Araç UINavigationControllerçubuğu veya gezinme çubuğu olmadan sahip olmak mümkün mü ?


Sınıfın üst sınıfı nedir self?

Yanıtlar:


192

Aşağıdakileri yapabilmelisiniz:

self.navigationController.navigationBar.isHidden = true //Swift 5

self.navigationController, (açık bir şekilde) UINavigationController örneğidir. Benim için işe yarıyor gibi görünüyor, ancak bunu göndermeden önce yalnızca kısaca test ettim.


2
Yani sizin durumunuzda self.navigationController.navigationBar.hidden = YES;
Ashwin

4
Başardı! Bununla birlikte, kod aracılığıyla yapmak yerine IB'deki Nagivation araç çubuğu için Gizli kutusunu işaretleyebildiğimi de ekleyeceğim. Teşekkürler!
DOOManiac

1
Evet, bunun için üzgünüm. IB kullandığınızı anlamalı ve kod kullanmak yerine Gizli kutusundan bahsetmeliydim. Son zamanlarda tüm arayüzlerimi .xib dosyaları olmadan tamamen programlı bir şekilde oluşturmaya başladım, bu yüzden cevabım için doğrudan buna gittim.
Ashwin

5
Buna görünüm denetleyicimde - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } buna görünümde olacak diyorum ve işe yarıyor
Ali

2
Gezinme Çubuğu gizli ancak görünüm denetleyici
ekranım

40

Gezinme çubuğu istemiyorsanız ve içeriğin gezinme çubuğunun normalde olacağı yere ayarlanmasını istiyorsanız,

self.navigationController.navigationBarHidden = YES;

Bu size şöyle bir sonuç verir:

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

Oysa self.navigationController.navigationBar.hidden = YES;size navigationBar'ın olması gereken bir alan verir. Bunun gibi:

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


İOS 6 ile elde edilen sonuçlar arasındaki fark çok güzel bir ayrım. IOS 7'den itibaren, alan kaldırılmış gibi görünüyor, ancak daha fazla kişinin durumun böyle olduğunu doğrulamasını bekleyeceğim.
Alex Zavatone

39

Xcode 4.3.2'de:

  1. Film şeridinde gezinme denetleyicisini seçin
  2. (Sağ) Yardımcı Programlar panelinde Nitelik Denetçisi'ni seçin
  3. Gezinme Denetleyicisi kategorisi altında iki onay kutusu vardır:

    [] Gezinme Çubuğunu gösterir

    [] Araç Çubuğunu gösterir

Benim için çalıştı ...


8

Swift 4

Onu görünümde saklıyorum

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

Ardından, bir segmente bastığınızda geri koyabilirsiniz (bir sonraki görünümde geri düğmesine sahip olmak istiyorsanız)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

3

Swift 3 Programlı Olarak

self.navigationController.isNavigationBarHidden = true

veya

self.navigationController.navigationBar.isHidden = true

Not: iOS 10'da test edilen bu iki yaklaşım arasında bir fark görmedim.


1

Tüm bu yanıtlar üstte durum çubuğu için hala bir boşluk bırakıyor - bunu da kaldırmak için bu satırı ekleyin:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
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.