iPhone: Mengatur Judul Bilah Navigasi

87

Hai semua. Saya masih cukup baru dalam pengembangan iPhone, dan saya mengalami sedikit kesulitan untuk mengetahui cara mengubah judul Bilah Navigasi saya. Pada pertanyaan lain di situs ini, seseorang merekomendasikan untuk menggunakan:

viewController.title = @"title text";

tetapi itu tidak berhasil untuk saya ... Apakah saya perlu menambahkan UINavigationController untuk melakukannya? Atau mungkin hanya outlet dari subclass UIViewController saya? Jika membantu, saya mendefinisikan bilah navigasi di IB dan saya mencoba menetapkan judulnya di subkelas UIViewController saya. Ini adalah salah satu hal sederhana yang membuat saya pusing. Menempatkan self.title = @ "teks judul"; masuk viewDidLoaddan initWithNibNametidak berhasil juga. Ada yang tahu apa yang terjadi dan bagaimana membuatnya benar?

Terima kasih!

Arthur Skirvin
sumber

Jawaban:

154

Pengontrol tampilan harus merupakan anak dari beberapa UINavigationController agar .titleproperti dapat diterapkan. Jika UINavigationBar hanyalah sebuah tampilan, Anda perlu mendorong item navigasi yang berisi judul, atau memodifikasi item navigasi terakhir:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

atau

bar.topItem.title = @"title text";
kennytm
sumber
8
Wow. Saya telah menghabiskan satu jam terakhir dengan serius menjelajahi forum dan dokumentasi untuk mencoba mencari tahu, dan saya meyakinkan diri sendiri bahwa ini akan lebih kompleks dari ini. Kode ini sangat sederhana dan saya tidak perlu mengotak-atik apa pun di IB. Sempurna! KennyTM, Anda keren. Jika saya ingat, Anda juga menjawab pertanyaan NSDate saya dan mengarahkan saya ke kamus penelitian. Anda adalah orang favorit baru saya di situs ini. Terimakasih banyak untuk semua bantuanmu!
Arthur Skirvin
5
komentar Anda membuat saya tersenyum dan bertanya-tanya: apakah ada yang pernah berteman di sini di SO, pernah? biasanya semua orang di sini sangat membantu tetapi tampaknya tidak mengekspresikan emosi manusia (kecuali penanya tentu saja ketika dia frustrasi)
maltalef
Lihat jawaban Sorin untuk solusi yang kompatibel dengan papan cerita.
devios1
Terima kasih atas jawaban Anda yang sangat menghemat banyak waktu saya. :) @kennytm
jerrysjtu
124

jika Anda melakukan semuanya dengan kode dalam viewDidLoadmetode yang UIViewControllerAnda hanya harus menambahkanself.title = @"title text";

sesuatu seperti ini:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

Anda juga bisa mencoba self.navigationItem.title = @"title";

juga periksa apakah navigationItem Anda tidak null dan jika Anda telah menyetel latar belakang kustom ke navigationbar, periksa apakah judulnya disetel tanpa itu.

Sorin Antohi
sumber
@ SorinA, Terima kasih. Ini adalah cara yang lebih baik untuk memberi judul bilah navigasi.
Tirth
33

Ada satu masalah dengan penggunaan self.title = @"title";

Jika Anda menggunakan Bilah Navigasi bersama dengan bilah Tab, baris di atas juga mengubah label untuk Item Bilah Tab. Untuk menghindarinya, gunakan apa yang disarankan @testing

self.navigationItem.title = @"MyTitle";
Jigish
sumber
13

Jika Anda ingin mengubah judul navbar (bukan judul tombol kembali navbar!) Kode ini akan berfungsi.

self.navigationController.topViewController.title = @"info";
M. Gökay Borulday
sumber
9

Jika Anda ingin mengubah judul navBar di dalam pengontrol tabBar, lakukan ini:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}
Pantelis Proios
sumber
viewDidAppear melakukan trik untuk saya setelah 2 jam mencoba menyelesaikannya. Terima kasih :)
Tchelow
topItem.title mungkin atau mungkin bukan judul bilah navigasi. Jika itu adalah layar level atas tanpa tombol kembali, itu akan mengatur judul. Tetapi jika Anda memiliki tombol kembali, topItem.title sebenarnya adalah judul tombol kembali.
pengguna2962499
5

Di aplikasi berbasis navigasi saya, saya melakukan ini:

myViewController.navigationItem.title = @"MyTitle";
pengujian
sumber
4

Saya memiliki pengontrol navigasi yang terintegrasi dalam TabbarController. Ini berhasil

self.navigationItem.title=@"title";
Sagar Dalwale
sumber
4

Secara default pengontrol navigasi menampilkan judul 'topitem'

jadi dalam metode viewdidload appdelegate Anda, Anda bisa. Saya mengujinya dan berhasil

navController.navigationBar.topItem.title = @"Test";
ronaldus_magnus
sumber
2
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

Kode ini berhasil.

rmsh
sumber
Selamat datang di SO dan terima kasih atas kirimannya. Sebaiknya posting info ini sebagai komentar, silakan lihat Bagaimana Menjawab untuk info lebih lanjut.
Serge Belov
2

Jika Anda bekerja dengan Storyboards, Anda dapat mengklik controller, beralih ke tab properti, dan mengatur teks judul di sana.

Orang
sumber
1

Saya rasa Anda membutuhkan title dinamis, itulah mengapa Anda tidak mengaturnya di IB.

Dan saya anggap objek viewController Anda adalah yang ditentukan dalam NIB?

Mungkin mencoba mengaturnya ke nilai dummy di IB dan kemudian men-debug metode untuk melihat pengontrol mana yang memiliki nilai dummy - dengan asumsi itu muncul sebagai judul ...

Chris Kimpton
sumber
1

Dari dalam TableViewController.m Anda:

self.navigationController.navigationBar.topItem.title = @ "Bla bla Judul Luar Biasa";

OneInABajilian
sumber
1

Untuk semua Swift-ers Anda di luar sana, ini bekerja dengan sempurna untuk saya. Ini terutama salah satu cara yang lebih singkat untuk menyelesaikan pengaturan judul, juga:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}
kbpontius.dll
sumber