Saat ini nilai default tombol bilah kiri adalah judul tampilan yang memuat yang sekarang, dengan kata lain tampilan yang akan ditampilkan ketika tombol ditekan (tombol kembali).
Saya ingin mengubah teks yang ditampilkan pada tombol ke yang lain.
Saya mencoba meletakkan baris kode berikut dalam metode viewDidLoad view controller, tetapi sepertinya tidak berhasil.
self.navigationItem.leftBarButtonItem.title = @"Log Out";
Apa yang harus saya lakukan?
Terima kasih.
-viewDidLoad:
Di ChildVC ini bekerja untuk saya ...
Bekerja di Swift juga!
sumber
Berikut ini dokumentasi untuk backBarButtonItem :
Lihat Pengendali A ( pengontrol tampilan "induk" ):
Ketika yang lain controller tampilan B adalah di atas tumpukan navigasi, dan A adalah tepat di bawah ini, B 's tombol kembali akan memiliki judul 'pendek' .
sumber
di Xcode 4.5 menggunakan storyboard, sejauh ini solusi termudah yang saya temukan ketika nilai tombol Kembali tidak harus berubah secara dinamis adalah dengan menggunakan bidang "Tombol Kembali" yang terkait dengan Item Navigasi pada Pengontrol Tampilan yang Anda gunakan ingin tombol "Kembali" untuk mengatakan sesuatu yang lain.
mis. pada tangkapan layar di bawah, saya ingin tombol Kembali untuk pengontrol tampilan yang saya tekan untuk memiliki "Kembali" sebagai judul tombol Kembali.
tentu saja, ini tidak akan berfungsi jika Anda perlu tombol kembali untuk mengatakan sesuatu yang sedikit berbeda setiap kali ... ada semua solusi lain di sini untuk itu.
sumber
Saya tahu, pertanyaannya sudah sangat lama, tetapi saya menemukan solusi yang bagus.
Bekerja dari childView! Diuji dengan iOS 7.
sumber
Mungkin saya terlalu sederhana tetapi dari dokumentasi Apple, kata-katanya adalah:
Solusi yang ditandai benar di atas menetapkan item tombol default dari pengontrol induk. Ini jawaban yang tepat, tapi saya menyelesaikan masalah dengan mengubah
self.title
properti UIViewController tepat sebelum mendorong controller baru ke tumpukan NavigationController.Ini secara otomatis memperbarui judul tombol kembali pada pengontrol berikutnya, dan selama Anda mengatur
self.title
kembali apa yang seharusnya,viewWillAppear
saya tidak dapat melihat metode ini menyebabkan terlalu banyak masalah.sumber
Ini bekerja lebih baik untuk saya. Coba:
sumber
Di Swift / iOS8, yang berikut ini berfungsi untuk saya:
Diporting dari jawaban Felipe.
sumber
self.navigationController?.navigationBar.topItem?.backBarButtonItem
Ok, ini jalannya. Jika Anda memiliki view controller "first" dan Anda menavigasi view controller "second" lainnya dengan menekan tombol atau dll. Anda perlu melakukan beberapa pekerjaan. Pertama, Anda perlu membuat BarButtonItem dalam metode viewDidLoad view controller kedua seperti ini;
Setelah Anda melakukannya, Anda perlu menulis kode untuk tindakan "btnBack" di file .m yang sama seperti ini;
Itu saja.
sumber
leftBarButtonItem
tidak memiliki tampilan abackBarButtonItem
, jika itu penting dalam desain aplikasi.Saya memiliki pengontrol tampilan induk dengan judul yang sangat panjang. Ini menghasilkan teks tombol kembali berdarah ke judul pengontrol tampilan anak.
Setelah mencoba banyak solusi yang berbeda, inilah yang akhirnya saya lakukan (memperluas pendekatan @ john.k.doe):
Menggunakan Xcode 7.2, Swift 2
Navigation Item
ke adegan Parent View Controller (bukan VC anak)Attributes Inspector
baru AndaNavigation Item
, ketikkanspace
karakter diBack Button
bidang. Lebih lanjut tentang ini nanti.potongan:
Penjelasan:
Jenis tombol kembali milik pengontrol tampilan induk. The
Navigation Item
memberi Anda pegangan untuk tombol kembali, sehingga Anda dapat mengatur judul dalam kode atau dalam Storyboard.catatan:
Jika Anda meninggalkan
Navigation Item
Back Button
teks sebagai string kosong default, judul tombol kembali akan menjadi "Kembali".Pendekatan lain berhasil, mengapa menggunakan yang ini ?:
Meskipun mungkin untuk mengganti judul tombol kembali pada pengontrol tampilan anak, itu merupakan tantangan untuk mengatasinya sampai judul tersebut telah melintas sebentar di layar.
Beberapa pendekatan membangun tombol kembali baru dan menimpa yang sudah ada. Saya yakin itu berfungsi, dan mungkin perlu dalam beberapa kasus penggunaan. Tapi saya lebih suka memanfaatkan API yang ada bila memungkinkan.
Mengubah
title
pengontrol tampilan induk adalah solusi tercepat untuk beberapa situasi. Namun, ini mengubah judul induk sehingga Anda harus mengelola status. Hal-hal juga menjadi berantakan denganTab Bar Controller
karena perubahan judul menyebabkan efek samping denganTab Bar Item
judul.sumber
Bagi mereka yang menggunakan storyboard cukup pilih induk (bukan yang memegang tampilan target) melihat bingkai pengontrol (pastikan Anda mengklik kanan pada bilah Navigasi, lalu buka inspektur atribut, di mana Anda akan menemukan tiga input formulir. Yang ketiga " tombol kembali "adalah yang kita cari.
sumber
Versi cepat:
Di ViewController anak Anda:
sumber
Inilah cara lain untuk melakukannya.
Di pengontrol tampilan orang tua Anda, terapkan metode berikut:
Di pengontrol tampilan anak Anda, saat Anda ingin mengubah judul, ini akan berfungsi:
Saya tidak pernah bisa membuat
parentViewController
properti bekerja:Saya tidak tahu apakah itu bug atau saya tidak menggunakannya dengan benar. Tetapi mengambil controller tampilan kedua-ke-terakhir dalam
viewControllers
array menunjuk ke controller tampilan induk, dan saya dapat memanggil metode induk dengan benar dengan referensi itu.sumber
baik. Saya pribadi membenci semua opsi ini. Karena itu saya datang dengan saya sendiri.
Berdasarkan informasi yang saya lihat. Tampaknya pengontrol tampilan Sebelumnya mengendalikan tombol "Kembali" sendiri yang akan disajikan pada pengontrol tampilan yang didorong.
Saya telah membuat metode Beban Malas untuk item navigasi pada controller yang ingin Tombol Kembali diubah.
Milik saya adalah Pengendali Pembeli Undangan
Undangan Pembeli adalah teks yang disetel secara default.
tetapi tombol kembali perlu Undang
Berikut adalah kode yang saya gunakan untuk membuat tombol kembali.
Saya menempatkan kode ini di bagian atas file Controller's Implementatio (.m) dan secara otomatis mengalahkan metode super.
Saya merasa ini adalah cara yang jauh lebih elegan untuk mencapai ini.
Saya menempatkan kode ini di satu tempat, dan secara otomatis akan diisi ketika dibutuhkan.
Tidak perlu memanggil kode sebelum setiap permintaan push.
Semoga ini membantu
sumber
sumber
Inilah jawabannya:
Dalam
viewDidAppear:animated
(TIDAK dalamviewDidLoad
) lakukan hal berikutItu kalau mau menjaga bentuk tombol kembali.
sumber
Tidak ada solusi yang dijelaskan di sini yang berfungsi untuk saya. Jadi yang saya lakukan adalah menghapus judul dari adegan di mana saya berasal dengan cara berikut:
self.title = @"";
Jadi ketika adegan baru disajikan teks kembali tidak muncul.
Saya absolut setuju bahwa ini sama sekali bukan solusi yang jelas, tetapi berhasil dan tidak ada yang dijelaskan bekerja untuk saya.
sumber
Saya telah menemukan bahwa yang terbaik adalah mengubah judul pengontrol tampilan saat ini di tumpukan navigasi ke teks yang diinginkan dari tombol kembali sebelum mendorong ke pengontrol tampilan berikutnya.
Misalnya
Kemudian di viewDidAppear atur judul kembali ke judul yang diinginkan untuk VC asli. Voila!
sumber
Untuk Swift:
sumber
Saya telah menemukan, bahwa cara termudah untuk mengubah nama tombol kembali adalah dengan mengatur judul pengontrol tampilan ke judul tombol kembali, dan kemudian mengganti titleView di item navigasi pengontrol tampilan ke label khusus dengan itu nyata nama.
Seperti ini:
CustomViewController.m
Ini akan membuat judul Anda di UINavigationBar terlihat seperti asli. Memberikan pengontrol tampilan kemampuan untuk memiliki judul terpisah dan judul tombol kembali.
Dalam kasus pengontrol tampilan A dan B, A bertanggung jawab untuk mengetahui bagaimana seharusnya tombol kembali, sementara B ditampilkan.
EDIT: Ini juga mempertahankan tampilan asli tombol kembali (Butir tombol bilah panah kiri).
sumber
Kode ini juga berfungsi. Letakkan ini di pengontrol root pengontrol navigasi:
sumber
Saya baru di iOS tapi saya akan memberikan jawaban yang sangat sederhana saya menimpa kelas pengontrol navigasi. Saya memiliki metode override push dan pop yang sederhana dan menyimpan judul controller tampilan sebelumnya. Maaf karena menempel di blok js. Agak bingung bagaimana melewatinya di blok kode normal.
sumber
self.navigationController.navigationBar.backItem.title = @"TEXT";
Dan di Swift:
sumber
Anda dapat meletakkannya di mana pun Anda suka dalam kode di parrent controller, yang memungkinkan Anda untuk memiliki tombol backbeda yang berbeda untuk tampilan anak yang berbeda.
sumber
Sebagian besar solusi membunuh gaya asli BackButton (Tombol bar panah kiri) sambil menambahkan tombol biasa dengan judul yang diinginkan.
Jadi untuk mempertahankan gaya asli ada 2 cara:
1: Untuk menggunakan gaya tombol tidak berdokumen (110 atau sesuatu seperti itu) yang saya lebih suka tidak melakukan. Tetapi jika mau, Anda bisa menemukan cara melakukannya di sini, di stackoverflow.
2: Untuk menggunakan ide I the Trenskow. Saya menyukainya dan saya menggunakannya sedikit berubah.
Alih-alih menimpa - (NSString *) judul saya telah memutuskan untuk mempertahankan judul asli dengan cara berikut (yang memungkinkan saya untuk menggunakan judul nib dan diberi judul di push state btw).
Solusi ini berfungsi baik dan terlihat asli. Juga jika menggunakannya dalam metode viewDidLoad itu mencegah eksekusi lebih dari 1 kali.
Saya juga sudah mencoba solusi Jessedc tetapi terlihat buruk. Hal ini menyebabkan perubahan bar judul terlihat oleh pengguna dengan cepat dari aslinya ke BackButton yang diinginkan dan kembali.
sumber
Ini berfungsi bagi saya sebagai versi "sederhana" dari jawaban yang diposting sebelumnya.
Jangan lupa untuk meletakkan kode di dalam pengontrol tampilan induk (mis. Tampilan yang memiliki tampilan tabel atau UITableViewController), bukan tampilan anak atau detail (mis. UIViewController).
Anda dapat dengan mudah melokalisasi string tombol kembali seperti ini:
sumber
Kami memiliki dua VC A dan B.
Jika Anda ingin mengubah judul dalam B, tulis kode ini dalam A
Swift 4.1 Xcode 9.4
sumber
Jawaban Stan adalah yang terbaik. Tapi itu juga memiliki masalah, ketika Anda menggunakan controller dengan Tab Bar dan mengubah judul controller, Anda juga bisa mengubah judul Tab Bar. .title dalam fungsi. Jawabannya ada di sini: (Dengan ARC dan menambahkannya ke viewDidLoad view)
Dalam penggunaan saya sendiri, saya membuatnya menjadi fungsi seperti ini, hanya memiliki fitur dengan satu kode baris di viewDidLoad.
sumber
Jika Anda ingin tidak hanya mengubah teks dari tombol Kembali ke teks yang sama dan tetap menjadi bentuk panah kiri asli, tetapi juga untuk melakukan sesuatu ketika pengguna mengklik tombol Kembali, saya sarankan Anda untuk melihat-lihat " CustomNavigationController " saya. .
sumber
MASALAH: Teks "Kembali" di bilah navigasi tidak dapat diganti.
ALASAN: Label "Kembali" diatur di bilah navigasi setelah mendorong tampilan karena atribut .title pada pengendali tampilan induk diatur ke nol (atau tidak diinisialisasi).
SATU SOLUSI: Jika Anda mengatur self.title = "Terserah ..." Anda akan melihat bahwa alih-alih "Kembali" akan muncul "Terserah ..." setelah mendorong pengontrol tampilan baru.
sumber