Swift - Bagaimana cara menyembunyikan tombol kembali di item navigasi?


103

Saat ini saya memiliki dua pengontrol tampilan. Masalah saya adalah saya tidak tahu cara menyembunyikan tombol kembali setelah beralih ke pengontrol tampilan kedua. Sebagian besar referensi yang saya temukan ada di Objective-C. Bagaimana cara mengkodekannya di Swift?

Sembunyikan kode tombol kembali di Objective-C

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

Jawaban:


366

Menurut dokumentasi untuk UINavigationItem:

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

30
snarkiness ini gratis.
Greg

58
Mungkin menakut-nakuti Anda @ Paulw11, namun fakta yang jelas adalah mengetik "Swift tombol hide kembali" ke Google dan datang ke sini - seperti saya lakukan - adalah ton lebih cepat daripada membajak melalui rim teks dalam dokumentasi resmi.
Joseph Beuys 'Mum

4
Sementara nama tombol kembali ditentukan di pengontrol tampilan pertama, mungkin menarik untuk memperhatikan bahwa kode untuk menyembunyikannya harus diterapkan di pengontrol tampilan kedua (yang menampilkan tombol).
XLE_22

38

Jika Anda menggunakan UITabBarController:

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

Sama untuk saya, namun saya ingin mengerti mengapa. Adakah yang tahu apa perbedaan antara jawaban yang diterima dan pendekatan ini? Satu-satunya hal yang dapat saya pikirkan adalah model warisan vs versi statis dari bilah navigasi.
Helmut Granda

1
@HelmutGranda Jika Anda memperhatikan bahwa Bruno menggunakan Pengontrol Tab Bar, itulah perbedaannya. Dalam kasus jawaban yang diterima, VC kemungkinan tertanam di pengontrol navigasi.
cloudcal

@cloudcal Saya tidak menggunakan tabBar, namun kedua jawaban berfungsi. Keduanya menyembunyikan tombol kembali. Saya pikir mereka akan berperilaku berbeda jika viewController ada di layar dan kemudian saya ingin menyembunyikan tombol kembali. Namun lagi-lagi mereka berdua melakukan hal yang sama. Saya tidak dapat menemukan perbedaan di antara mereka. Saya mengatakan jawaban Bruno salah. Sebaliknya untuk navigationController murni itu tidak membuat perbedaan. Saya belum mencoba tabBarController
Honey

20

Cepat

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

Jelas bahwa navigationItem.hidesBackButton = true adalah jawaban yang benar. Jika ada tombol kiri, yang mungkin merupakan kasusnya, maka ini pasti jawaban yang benar, dan harus dianggap sebagai jawaban yang lebih lengkap.
truedat101

self.navigationItem.hidesBackButton = trueIni bekerja seperti yang diharapkan.
Shahabuddin Vansiwala

9

Ini juga ditemukan dalam dokumentasi kelas UINavigationController:

navigationItem.hidesBackButton = true


1

Anda dapat mencoba dengan kode di bawah ini

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

Ini bukanlah jawaban untuk pertanyaan ini.
Boris Nikolic

0

Ini adalah versi jawaban dalam

Cepat 5

yang dapat Anda gunakan dari storyboard:

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

Setiap item navigasi dari pengontrol tampilan akan memiliki properti baru ini di bagian atas inspektur atribut


0

Itu berhasil bagi saya di Swift 5 seperti pesona, cukup tambahkan ke viewDidLoad () Anda

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

-4

masukkan deskripsi gambar di sini

Pergi ke inspektur atribut dan hapus centang tampilkan Bilah Navigasi untuk menyembunyikan tombol kembali.

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.