UINavigationController tanpa bilah navigasi?


117

Saya memiliki aplikasi universal, dan pada versi iPad yang saya gunakan UISplitViewControlleruntuk membuat antarmuka yang mirip dengan aplikasi Mail.

Saya mengalami masalah dalam mendorong tampilan Detail baru, jadi saya memutuskan untuk menggunakan UINavigationControllersehingga saya bisa mendorong dan memunculkan tampilan sesuai kebutuhan. Namun, saya tidak ingin menggunakan tampilan navigasi atau toolbar. Tapi apa pun yang saya lakukan, saya tidak dapat menyembunyikan bilah navigasi.

Saya sudah mencoba menghapus centang "Tunjukkan Bilah Navigasi" di IB, dan saya juga sudah mencoba menyetel:

[self.navigationController setNavigationBarHidden:YES];

di viewDidLoad/ viewDidAppear/ viewWillAppear. Saya juga sudah mencobanya di setiap tampilan yang akan didorong. Tidak ada yang berhasil.

Apakah ada sesuatu yang saya lewatkan di sini? Apakah mungkin memiliki UINavigationControllertanpa toolbar atau bar navigasi?


Apa superclass dari kelas selfadalah instance?

Jawaban:


192

Anda harus bisa melakukan hal berikut:

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

di mana self.navigationController (jelas) merupakan turunan dari UINavigationController. Sepertinya berhasil untuk saya, tetapi saya hanya mengujinya sebentar sebelum memposting ini.


2
Jadi, dalam kasus Anda, self.navigationController.navigationBar.hidden = YES;
Ashwin

4
Itu berhasil! Meskipun saya akan menambahkan bahwa saya bisa dengan mudah mencentang kotak Tersembunyi untuk toolbar Nagivation di IB daripada melakukannya melalui kode. Terima kasih!
DOOManiac

1
Ya, maaf soal itu. Saya seharusnya memahami fakta bahwa Anda menggunakan IB dan menyebutkan kotak Tersembunyi alih-alih menggunakan kode. Saya baru-baru ini mulai membuat semua antarmuka saya sepenuhnya secara terprogram tanpa file .xib, jadi langsung ke itu untuk jawaban saya.
Ashwin

5
Saya menyebutnya dalam tampilan akan muncul di pengontrol tampilan saya seperti ini - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } dan berfungsi
Ali

2
NavBar tersembunyi tetapi layar pengontrol tampilan saya tidak meluas ke layar penuh
ArdenDev

40

Jika Anda tidak menginginkan bilah navigasi, dan Anda ingin kontennya disesuaikan dengan posisi bilah navigasi biasanya, Anda harus menggunakan

self.navigationController.navigationBarHidden = YES;

Ini memberi Anda hasil seperti ini:

masukkan deskripsi gambar di sini

Padahal self.navigationController.navigationBar.hidden = YES;memberi Anda ruang di mana navigationBar seharusnya. Seperti ini:

masukkan deskripsi gambar di sini


Perbedaan yang sangat bagus pada perbedaan hasil dengan iOS 6. Pada iOS 7, tampaknya ruang telah dihapus, tapi saya akan menunggu lebih banyak orang untuk memverifikasi itu masalahnya.
Alex Zavatone

39

Di Xcode 4.3.2:

  1. Pilih pengontrol navigasi di storyboard
  2. Pilih Attributes Inspector di panel Utilities (kanan)
  3. Di bawah kategori Pengontrol Navigasi Anda memiliki dua kotak centang:

    [] Menampilkan Bilah Navigasi

    [] Menampilkan Toolbar

Bekerja untuk saya ...


8

Cepat 4

Saya menyembunyikannya di viewWillAppear

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

        self.navigationController?.isNavigationBarHidden = true;
    }

Kemudian Anda dapat meletakkannya kembali saat Anda menekan segue (jika Anda ingin memiliki tombol kembali pada tampilan berikutnya)

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

3

Swift 3 secara terprogram

self.navigationController.isNavigationBarHidden = true

atau

self.navigationController.navigationBar.isHidden = true

Catatan: Saya tidak melihat perbedaan antara kedua pengujian pendekatan ini di iOS 10.


1

Semua jawaban ini masih menyisakan ruang di bagian atas untuk bilah status - tambahkan baris ini untuk menghapusnya juga:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.