Yang ingin saya lakukan adalah menghapus teks dari tombol 'Kembali' a UIBarButtonItem
, hanya menyisakan chevron biru pada bilah navigasi. Ingatlah bahwa saya sedang mengembangkan untuk iOS 7. Saya sudah mencoba beberapa metode, termasuk, tetapi tidak terbatas pada:
Ini adalah metode gambar yang tidak saya sukai (gambar tampak tidak pada tempatnya):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Metode lain yang saya coba adalah ini, yang tidak berhasil (tidak ada yang ditampilkan):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Yang ingin saya capai adalah sesuatu seperti tombol kembali yang ditemukan di aplikasi iOS 7 Music, yang hanya menampilkan chevron tunggal.
Terima kasih.
ios
uinavigationbar
uibarbuttonitem
uinavigationitem
Pan Ziyue
sumber
sumber
Jawaban:
Kemudian Anda dapat menghapus judul item tombol kembali.
Jika Anda menggunakan Storyboard, Anda dapat mengatur inspektur atribut navigasi Tombol Kembali dengan spasi.
sumber
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
jugaUntuk mengatur judul tombol kembali untuk pengontrol tampilan tanpa mengubah judulnya gunakan:
Tujuan-C:
Cepat:
Agar jelas, ini dilakukan pada pengontrol tampilan yang akan Anda lihat jika Anda menekan tombol kembali. yaitu alih-alih melihat '<Pengaturan' Anda hanya ingin melihat '<' lalu pada SettingsViewController Anda, Anda akan memasukkan ini ke dalam
init
. Maka Anda tidak mendapatkan salah satu masalah dari judul tidak ditampilkan ketika Anda melihat controller tampilan itu sendiri.sumber
Jika Anda menggunakan Storyboard, Anda dapat pergi ke
Attributes Inspector
ViewController'sNavigation Item
(klik padaNavigation Bar
) dan mengaturBack Button
properti ke "" (satu karakter spasi). Ini akan mengatur judul Tombol Kembali ke satu karakter spasi, membiarkan chevron terlihat. Tidak perlu dipusingkan dengan kode.Perhatikan bahwa ini akan menetapkan
Back Button
judul untuk Tombol Kembali yang akan dipisahkan ke View Controller ini dari yang didorong di atasnya, bukan untukBack Button
yang akan ditampilkan di dalam Controller ini!sumber
Ini berfungsi bagi saya untuk menampilkan chevron 'belakang' tanpa teks:
Tetapkan properti ini di
viewDidLoad
View Controller yang menyajikan bilah navigasi dan itu akan membantu.Catatan: Saya hanya mengujinya di iOS 7, yang masih dalam cakupan pertanyaan.
sumber
-viewDidLoad
VC yang saya tidak ingin teks Kembali. Namun, apa yang saya temukan kemudian adalah ketika saya mengeluarkan VC ke-2 darinavigationController
teks Judul muncul segera setelahnya, tidak langsung. Saya kira video akan menggambarkan ini lebih baik jadi ini dia: linkSaat Anda mengatur judul tombol, gunakan @ "" bukan @ "".
--EDIT--
Apakah ada yang berubah ketika Anda mencoba string lain? Saya sendiri berhasil menggunakan kode berikut:
backString adalah variabel yang diatur ke @ "" atau @ "Kembali", tergantung pada apakah saya menggunakan iOS 7 atau versi yang lebih rendah.
Satu hal yang perlu diperhatikan adalah kode ini tidak ada di controller untuk halaman yang ingin saya sesuaikan dengan tombol kembali. Ini sebenarnya di controller sebelum di tumpukan navigasi.
sumber
setLeftBarButtonItem:backButton
bukan apa-apa akan ada di sana.Terkadang sangat membantu untuk melihat hal-hal dalam konteks. Berikut adalah proyek minimal yang menyembunyikan teks "kembali" tetapi masih menunjukkan panah.
Storyboard
Ada segue acara dari tombol "Tampilkan Pengendali Tampilan Kedua" ke pengontrol tampilan kedua.
Saya juga menambahkan Item Navigasi ke pengontrol tampilan kedua sehingga akan memiliki judul. Ini opsional. Itu tidak mempengaruhi tombol kembali.
Kode
FirstViewController.swift
SecondViewController.swift
Metode alternatif (khusus IB, tanpa kode)
Pada storyboard pilih item navigasi untuk pengontrol tampilan pertama (bukan yang kedua). Cukup masukkan spasi untuk teks Tombol Kembali.
sumber
sumber
Di iOS7, Apple memperkenalkan dua properti baru ke UINavigationBar, 'backIndicatorTransitionMaskImage' dan 'backIndicatorImage'.
Dengan hanya menelepon sekali:
Ini akan membuat gambar khusus alih-alih mesin terbang chevron default, mewarisi warna warna keyWindow.
Dan untuk menghapus judul, saya akan menyarankan jawaban Kamaros. Ingatlah untuk memanggil kode ini pada pengontrol tampilan yang mendorong pengontrol tampilan baru Anda. Menghapus teks judul iOS UIBarButtonItem
sumber
Saya tidak memiliki banyak keberhasilan dengan jawaban yang diberikan tetapi saya menemukan pekerjaan yang sangat sederhana. Di storyboard Anda, Anda dapat mengklik Item Navigasi UIViewController's Anda dan mengatur teks tombol kembali. Saya mengaturnya ke satu ruang '' dan itu memberi saya perilaku yang saya cari.
sumber
Ini bekerja untuk saya di iOS10. Sebut ini dari viewDidLoad dari view controller.
sumber
Solusi sederhana untuk masalah ini, bekerja pada iOS7 dan juga 6, adalah dengan mengatur tampilan judul khusus di viewDidLoad:
Kemudian, di viewWillAppear: Anda dapat memanggil dengan aman
Karena tampilan judul Anda adalah tampilan khusus, itu tidak akan ditimpa ketika kembali ke tumpukan navigasi.
sumber
[self.navigationItem.backBarButtonItem setTitle:@" "];
di viewWillAppear tetapi tidak berfungsi pada tampilan yang disajikan setelah menolak tampilan modal.Sebenarnya Anda bisa melakukan ini hanya dengan satu trik:
Timpa
UINavigationBar
kelas dan tambahkan baris kode ini:Kemudian inisialisasi Anda
UINavigationController
dengan kelas UINavigationBar khusus ini dll.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Semoga ini membantu
sumber
Saya bisa menggagalkan sesuatu bersama menggunakan jawaban DonnaLea. Ini adalah bagaimana solusinya muncul di subkelas UIViewController saya:
Masalah dengan jawaban asli adalah bahwa ia menghilangkan judul dari controller ketika Anda kembali ke sana. Mencoba untuk mereset judul di viewWillDisappear sudah terlambat dalam proses transisi; Itu menyebabkan judul untuk kembali masuk bukannya animasi dengan baik. Namun willMoveToParentViewController terjadi lebih cepat dan memungkinkan untuk perilaku yang benar.
Peringatan: Saya hanya menguji ini dengan push / pop UINavigationController normal. Mungkin ada perilaku tak terduga tambahan dalam situasi lain.
sumber
Dalam metode prepForSegue: pada ViewController pertama Anda, Anda menetapkan judul view ke @ "", jadi ketika tampilan berikutnya didorong, ia akan menampilkan judul ViewController sebelumnya yang akan menjadi @ "".
Satu-satunya masalah dengan ini adalah ketika Anda menekan tombol kembali tampilan sebelumnya Anda tidak akan memiliki judul, jadi Anda dapat menambahkannya lagi di viewWillAppear:
Saya tidak terlalu menyukai solusi ini tetapi ini berhasil dan saya tidak menemukan cara lain untuk melakukannya.
sumber
SWIFT 3
sumber
Tidak ada jawaban yang membantu saya. Tapi sebuah trik berhasil - Saya baru saja membersihkan judul view controller yang mendorong (di mana tombol kembali akan) sebelum mendorongnya.
Jadi ketika tampilan sebelumnya tidak memiliki judul, di iOS 7 tombol kembali hanya akan memiliki panah, tanpa teks.
Pada
viewWillAppear
pandangan yang mendorong, saya menempatkan kembali judul aslinya.sumber
Saya mengalami masalah yang sama dan saya melakukannya dengan cara ini.
--EDIT--
ini adalah solusi ketika Anda benar-benar ingin menghapus teks judul dari semua UIBbugtonItem. Jika Anda hanya ingin menghapus judul item tombol bilah belakang, tidak ada satu solusi mudah yang mudah. Dalam kasus saya, karena saya hanya memiliki sedikit UIBarButtonItems yang perlu menampilkan teks judul, saya hanya mengubah titleTextAttributes tombol tertentu. Jika Anda ingin lebih spesifik menggunakan kode di bawah ini, yang hanya akan mengubah tombol bilah navigasi:
sumber
UIControlStateHighlighted
jugaIni menggunakan subclass
navigationController
menghapus "Kembali".Saya menggunakan ini untuk menghapusnya, secara permanen melalui aplikasi.
sumber
sumber
Sembunyikan Tombol Kembali Judul Bar Navigasi
sumber
Inilah yang saya lakukan saya, yang lebih sederhana untuk menghapus judul tombol kembali
sumber
Swift 3.1 Anda dapat melakukan ini dengan menerapkan metode delegasi dari UINavigationController. Ini akan menyembunyikan Judul hanya dengan tombol kembali, kita masih akan mendapatkan gambar panah kembali dan fungsi default.
sumber
Anda juga dapat menggunakan ini:
Ini bekerja untuk saya
sumber
sumber
Solusi sempurna secara global
sumber
Saya membuat kelas khusus untuk
UINavigationController
dan menerapkannya ke semua pengontrol navigasi di aplikasi saya. Di dalamUINavigationController
kelas khusus ini saya mengaturUINavigationBar
delegasi menjadiself
begitu tampilan dimuat.Kemudian saya menerapkan metode delegasi:
Dengan cara ini saya cukup menetapkan kelas khusus saya untuk semua pengontrol navigasi saya dan menghapus judul dari semua tombol kembali. Dan hanya untuk kejelasan, saya selalu mengatur judul untuk semua pengontrol tampilan saya yang lain di dalam
viewWillAppear
sehingga judul selalu diperbarui tepat sebelum tampilan muncul (dalam kasus itu dihapus oleh trik seperti ini).sumber
Hanya dengan memasukkan satu spasi untuk item navigasi tombol Kembali berfungsi !!
sumber
Jika seperti saya Anda menggunakan tampilan khusus alih-alih
UINavigationBar
dan Anda terjebak dengan tombol kembali maka Anda harus melakukan sedikit pekerjaan yang terasa agak sombong.Sepertinya jika itu tidak disajikan maka tidak peduli apa itu akan mencoba menunjukkan judul, ini berarti itu ditampilkan kemudian disembunyikan sebelum ditarik dan menyelesaikan masalah.
sumber
sumber
Saya telah membuat kategori konfigurasi nol yang sangat sederhana untuk menyembunyikan semua judul tombol kembali melalui aplikasi Anda dapat memeriksanya di sini . Pertanyaan ini sudah menerima jawaban, tetapi bagi orang lain itu bisa membantu.
EDIT:
file .h
file .m
sumber