"Tombol kembali" secara UINavigationController
default menunjukkan judul tampilan terakhir di tumpukan. Apakah ada cara untuk memiliki teks khusus di tombol kembali?
ios
iphone
uinavigationcontroller
Ali Shafai
sumber
sumber
self.navigationController.navigationBar.topItem.title = @"Custom text";
Jawaban:
Dari tautan ini :
Seperti yang dikatakan Tyler dalam komentar:
sumber
release
yangUIBarButtonItem
.UIBarButtonItemStyleBordered
dengan panggilan ke propertiself.navigationItem.backBarButtonItem.style
. Dokumentasi: developer.apple.com/library/ios/documentation/uikit/reference/…Anda dapat mengatur teks di Pembuat Antarmuka:
Pilih item navigasi pada ViewController yang akan dikembalikan oleh tombol kembali:
Di inspektur atribut panel utilitas, masukkan label Anda untuk Tombol Kembali:
Saya lebih suka pendekatan ini daripada menetapkan judul dalam kode seperti pada jawaban yang diterima.
sumber
Saya menggunakan ini:
sumber
Saya menemukan solusi praktis untuk ini dengan hanya mengatur judul controller sebelum mendorong controller lain ke stack, seperti ini:
Kemudian, pastikan untuk mengatur judul aslinya
viewWillAppear
, seperti ini:Ini berfungsi karena perilaku default
UINavigationController
ketika membangun tombol kembali selama operasi push adalah dengan menggunakan judul dari pengontrol sebelumnya.sumber
Judul tombol kembali secara default ke judul tampilan sebelumnya sehingga trik cepat yang saya gunakan adalah menempatkan kode berikut pada file .m tampilan sebelumnya.
sumber
dalam metode init Anda, tambahkan kode berikut:
kemudian tambahkan metode sederhana, untuk memungkinkan pemecatan viewcontroller:
sumber
Tambahkan kode berikut di viewDidLoad atau loadView
Saya mengujinya di iPhone dan iPad dengan iOS 9
sumber
navigationController
topItem
self.navigationController?.navigationBar.topItem?.title = "Custom Text"
Menambah jawaban rein. Perhatikan dari dokumen Apple bahwa deklarasi backBarButtonItem adalah ini:
Oleh karena itu, jawaban rein akan membocorkan memori karena setter yang disintesis akan
retain
membuat Anda lulus begitu saja, yang tidak pernah dirilis secara eksplisit. Anda dapat memperbaiki ini dengan menggunakanautorelease
Atau Anda bisa mengarahkan variabel pada instance sehingga Anda dapat secara eksplisit melepaskannya nanti:
Semoga ini membantu!
sumber
sumber
Saya telah menemukan sesuatu yang menarik. Jika Anda mensubclass
UINavigationController
dan menimpapushViewController:animated:
metode dan melakukan sesuatu seperti ini: (ingatlah bahwa saya menggunakan ARC)Kemudian untuk semua
ViewControllers
yang didorong dengan pengontrol navigasi Anda akan memiliki tombol "Kembali" di dalamnya secara otomatis. Jika Anda ingin mengubah teks untuk pengontrol tampilan tertentu, Anda dapat mencoba dan mungkin melemparkan viewcontroller ke kelas tertentu atau protokol kustom Anda sendiri (yang diturunkan dari viewcontroller Anda yang dapat memiliki metode sepertibackButtonText
atau sesuatu yang konyol seperti itu) yang dapat memberi Anda informasi tertentu pada viewcontroller yang datang dengan begitu Anda dapat menyesuaikan teks tombol kembali untuk itu. Sekarang teks tombol kembali diurus di tempat yang seharusnya hanya memikul tanggung jawab. Saya harus mengakui bahwa membuat tombol baru untuk mengubah teks menyebalkan, tapi oh well.Adakah yang bisa memikirkan alasan mengapa tidak melakukannya seperti ini? Setidaknya Anda tidak perlu mengutak-atik judul viewcontroller atau harus ingat untuk membuat tombol kembali baru sebelum mendorong viewcontroller pada pengontrol navigasi.
sumber
jawaban rein bekerja dengan baik.
Perhatikan bahwa jika Anda menekan lebih dari satu pengontrol tampilan, judul tombol kembali yang diubah akan muncul untuk masing-masing, yang mungkin bukan yang Anda inginkan.
Dalam hal ini, Anda harus membuat UIBarButtonItem khusus setiap kali Anda mendorong pengontrol tampilan.
Juga, pastikan Anda melakukannya sebelum mendorong pengontrol tampilan, jika tidak, Anda akan mendapatkan cegukan layar saat judul berubah.
sumber
Memperluas saran Aubrey, Anda bisa melakukan ini di pengontrol tampilan anak:
buat dua variabel untuk menyimpan nilai lama dari navigationItem.title orang tua dan navigationItem orang tua
di
viewDidLoad
, tambahkan berikut ini:di
viewWillDisappear
, tambahkan berikut ini:Itu tidak sempurna. Anda akan melihat judul perubahan tampilan induk saat controller baru dianimasikan. TETAPI ini memang mencapai tujuan untuk memberi label kustom pada tombol kembali dan menjaganya agar tetap berbentuk seperti tombol kembali standar.
sumber
Masukkan ini ke dalam diri Anda
viewDidLoad
, berharap itu akan menghasilkan apa yang Anda carisumber
jika Anda ingin mengatur judul di ARRIVING controller (terkadang lebih banyak logika ..) di swift 3 lakukan:
dalam controller mendatang:
biasanya saya meletakkan self.setBackButtonNavBar di ekstensi pengontrol.
sumber
Saya tahu ini adalah pertanyaan lama dan jawabannya sudah habis!
Cara mudah adalah dengan melakukan ini di induk ViewController:
yaitu salah satu yang membawa Anda ke pengontrol tampilan berikutnya.
sumber
Melakukan ini dalam kode menghapus gaya tombol kembali
UINavigationConroller
. Jika Anda menambahkan Item Navigasi di setiap tampilan Anda, Anda dapat mengatur judul botton belakang di menuStoryBoard
.sumber