Bagaimana cara menyembunyikan Teks Tombol Kembali dari Pengontrol UINavigasi? Saya hanya akan memiliki "<" dan bukan "<Back"
104
Bagaimana cara menyembunyikan Teks Tombol Kembali dari Pengontrol UINavigasi? Saya hanya akan memiliki "<" dan bukan "<Back"
Jawaban:
Di pembuat antarmuka , Anda dapat memilih item navigasi dari pengontrol sebelumnya dan mengubah
Back Button
string ke tampilan tombol kembali yang Anda inginkan. Jika ingin kosong misalnya, beri spasi.Anda juga dapat mengubahnya dengan baris kode ini:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Atau di Swift :
self.navigationItem.backBarButtonItem?.title = ""
sumber
Back Button
sudah kosong di IB, tambahkan spasi untuk naikBack
dan tunjukkan panahnya.Anda juga bisa melakukan ini melalui papan cerita. Dalam inspektur atribut item navigasi dari pengontrol sebelumnya, Anda dapat menyetel "" di bidang tombol Kembali. Lihat Gambar di bawah. Ganti "Judul Anda di sini" menjadi "". Dengan melakukan ini, Anda akan mencapai hasil yang diinginkan. Anda tidak perlu lagi mengotak-atik 'Judul'.
Secara terprogram Anda bisa menggunakan
[self.navigationItem.backBarButtonItem setTitle:@" "];
di mana self mengacu pada pengontrol yang mendorong pengontrol Tampilan yang Anda inginkan.
Sampel Sebelum, Setelah bilah Navigasi
Sebelum
Setelah
sumber
backBarButtonItem
terprogram tidak berfungsi, tetapi pengaturan melalui storyboard berfungsi.backBarButtonItem
terprogram bekerja untuk saya di iOS 9.Anda dapat menerapkan
UINavigationControllerDelegate
seperti ini:Swift yang lebih tua
Cepat 4.x
backBarButtonItem
secaranil
default dan ini memengaruhi pengontrol yang didorong berikutnya, jadi Anda cukup menyetelnya untuk semua pengontrolsumber
Menyetel judul tombol kembali ke
@""
ataunil
tidak akan berfungsi. Anda perlu mengosongkan seluruh tombol (tanpa judul atau gambar):Objective-C
Cepat
Ini harus dilakukan pada pengontrol tampilan yang ada di atas pengontrol tampilan Anda di tumpukan navigasi (yaitu dari tempat Anda menavigasi ke VC melalui
pushViewController
metode)sumber
Solusi lain untuk masalah ini untuk situasi di mana Anda memiliki banyak pengontrol tampilan adalah dengan menggunakan
UIAppearance
proxy untuk secara efektif menyembunyikan teks judul tombol kembali seperti ini:Solusi ini akan membuat teks sebagai titik bening kecil, mirip dengan mengatur judul tombol kembali secara manual
@" "
, kecuali bahwa hal itu mempengaruhi semua tombol bilah navigasi.Saya tidak menyarankan ini sebagai solusi umum untuk masalah ini karena ini memengaruhi semua tombol bilah navigasi. Ini membalik paradigma sehingga Anda memilih kapan harus menampilkan judul tombol, daripada kapan menyembunyikan judul.
Untuk memilih kapan akan menampilkan judul, pulihkan atribut teks judul secara manual sesuai kebutuhan, atau buat subkelas khusus
UIBarButtonItem
yang melakukan hal yang sama (berpotensi denganUIAppearance
proxy lain ).Jika Anda memiliki aplikasi yang sebagian besar judul tombol kembali perlu disembunyikan, dan hanya beberapa (atau tidak ada) tombol navigasi yang merupakan tombol sistem dengan judul, ini mungkin cocok untuk Anda!
(Catatan: perubahan ukuran font diperlukan meskipun warna teksnya jelas untuk memastikan bahwa judul yang panjang tidak menyebabkan judul bilah navigasi tengah bergeser)
sumber
Tambahkan kode berikut di viewDidLoad atau loadView
Saya mengujinya di iPhone dan iPad dengan iOS 9
sumber
Anda dapat menambahkan kategori Objective-C ini agar semua tombol "Kembali" yang dibuat oleh pengontrol navigasi tidak memiliki teks. Saya baru saja menambahkannya ke file AppDelegate.m saya.
PS - (Saya tidak tahu cara membuat ekstensi ini berfungsi dengan Swift, ada kesalahan yang aneh. Pengeditan boleh menambahkan versi Swift)
sumber
override
dengan cepat. Pertanyaan yang sangat menarikSaya mencoba beberapa di atas dan di bawah tetapi tidak berhasil. Ini berhasil untuk saya:
sumber
Satu-satunya hal yang berfungsi tanpa efek samping adalah membuat tombol kembali kustom. Selama Anda tidak memberikan tindakan kustom, bahkan gerakan slide berfungsi.
Sayangnya, jika Anda ingin semua tombol kembali tidak memiliki judul, Anda perlu mengatur tombol kembali khusus ini di semua pengontrol tampilan Anda: /
Sangat penting untuk Anda menetapkan spasi sebagai judul dan bukan string kosong.
sumber
untuk menghapus Teks dari tombol belakang secara terprogram, gunakan di bawah Kode ini akan berfungsi dari xcode7 ke atas.
self.navigationController.navigationBar.topItem.title = @ "";
atau
manualLy di papan cerita, pilih bilah navigasi di pengontrol tampilan dan letakkan "" di teks tombol kembali.
ini akan berhasil. Terima kasih
sumber
self.navigationController?.navigationBar.topItem?.title = " "
di Xcode 9 dan berhasil!Jawaban saat ini tidak berfungsi. Saya ingin menghapus judul seluruhnya, namun teks "kembali" tidak menghilang.
Kembali ke pengontrol tampilan sebelumnya dan setel properti judulnya:
HANYA berfungsi jika View Controller sebelumnya tidak memiliki judul
sumber
@""
.Cara alternatif - gunakan kelas NavigationBar kustom.
Artinya, ini menghapus kembali judul seluruh proyek. Cukup setel kelas khusus untuk UINavigationController.
sumber
Setel Judul VC Sebelumnya menjadi string "" dengan spasi. dan judul dengan tombol kembali akan diganti dengan string spasi tunggal.
On Back tekan lagi setel ulang judul ke yang asli di viewWillAppear.
sumber
Gunakan kebiasaan
NavigationController
yang menggantikanpushViewController
sumber
Sudah banyak jawaban, inilah dua sen saya untuk masalah ini. Saya menemukan pendekatan ini sangat kuat. Anda hanya perlu meletakkan ini di viewController sebelum segue.
Cepat 4:
sumber
Saya mencoba semuanya di posting ini. Satu-satunya solusi yang berfungsi adalah @ VoidLess
Ini jawabannya sama tapi lebih lengkap
sumber
Ini adalah resolusi saya untuk iOS11, saya mengubah tampilan UIBarButtonItem di applicationDidFinishLaunchingWithOptions:
Anda tidak dapat mengubah offset Y, karena itu akan mengubah posisi tombol bar belakang juga di iOS11, tetapi tidak masalah di iOS10 dan di bawahnya.
sumber
Di Swift3,
Jika Anda mengatur pengaturan global
sumber
Swift 3.1 Anda dapat melakukan ini dengan mengimplementasikan metode delegasi UINavigationController.
sumber
Bagi mereka yang ingin menyembunyikan judul tombol kembali secara global.
Anda dapat Swizzle
viewDidLoad
dariUIViewController
seperti ini.Pemakaian:
sumber
Jika Anda menargetkan iOS 13 dan yang lebih baru, Anda dapat menggunakan API baru ini untuk menyembunyikan judul tombol kembali secara global .
sumber
Saya berjuang dengan ini karena saya memiliki pengontrol navigasi khusus. Saya dapat menghapus teks item belakang di semua pengontrol tampilan dengan kode ini di kelas pengontrol navigasi kustom saya
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Ini menghapus semua judul item belakang menggunakan pengontrol navigasi kustom ini.
sumber
Di iOS 11, kami menemukan bahwa mengatur
UIBarButtonItem
font / warna teks tampilan ke nilai yang sangat kecil atau warna yang jelas akan mengakibatkan item bar lain menghilang (sistem tidak menghormati kelas item UIBarButton lagi, itu akan mengubahnya menjadi a_UIModernBarButton
). Juga mengatur offset teks belakang ke offscreen akan menghasilkan flash selama pop interaktif.Jadi kami bingung
addSubView
:sumber
sumber
Teks belakang berasal dari View Controller terakhir
navigationItem.title
, dannavigationItem.title
secara otomatis diatur olehself.title
. Cara termudah untuk memecahkan masalah ini adalah dengan hooksetTitle:
, pastikannavigationItem.title = @""
Letakkan kode ini di
AppDelegate.m
akan membuatnya ok。Detail lebih lanjut di https://www.jianshu.com/p/071bc50f1475(Simple Chinease)
sumber
Solusi saya: - XCode: 10.2.1 - Swift: 5
sumber
XCode 11.5 Cepat 5
Cara yang sangat sederhana - meskipun mungkin sedikit hacky - untuk melakukan ini secara terprogram jika Anda tidak memerlukan tombol kembali kustom adalah dengan mengatur ukuran font sama dengan nol di pengontrol tampilan yang Anda dorong ke tumpukan, memanggil sesuatu seperti ini dari viewDidLoad
sumber
Akhirnya menemukan solusi sempurna untuk menyembunyikan teks belakang default di seluruh aplikasi.
Cukup tambahkan satu Gambar transparan dan tambahkan kode berikut di AppDelegate Anda.
sumber
Metode berikut berfungsi di iOS 11 dan aman untuk tidak mogok di versi iOS lainnya. Melakukan hal ini dapat membuat aplikasi Anda ditolak dalam peninjauan App Store karena UIModernBarButton dan UIBackButtonContainerView adalah API pribadi. Tempatkan di AppDelegate.
sumber
Versi Swift, bekerja dengan sempurna secara global:
sumber
solution
. Seperti yang ditunjukkan @limfinity, itu akan mengubahnya secara universal untuk semua UIBarButtonItem di seluruh aplikasi