Як програмно встановити заголовок панелі навігації?


84

У мене є панель навігації у поданні, і я хочу програмно змінити назву її елемента навігації.

Як це робиться?

Відповіді:


204

У вашому UIViewController

self.navigationItem.title = @"The title";

Так, я б вибрав це, оскільки воно лише оновлює заголовок навігаційного елемента, а не заголовок елемента панелі інструментів.
Пракаш Раман,

30

Версія Swift 3:

Якщо ви використовуєте навігаційну панель без контролера навігації, ви можете спробувати це:

navigationBar.topItem?.title = "Your Title"

Сподіваюся на допомогу.


11

In viewDidLoad

  self.title = @"Title";

3
Мої два центи :) Це працює, хоча якщо контролер vew є частиною контролера панелі інструментів. Потім також оновлюється заголовок панелі інструментів.
Пракаш Раман,

7

З документації Apple :

Найпоширеніший спосіб використання навігаційної панелі - це навігаційний контролер. Ви також можете використовувати панель навігації як самостійний об’єкт у своєму додатку.

Отже, якщо у вас є UINavigationController, все, що вам потрібно зробити, щоб встановити заголовок панелі навігації (як пояснювалось у всіх попередніх відповідях)

self.navigationItem.title = @"title";

Але якщо у вас є автономна панель навігації, яка створюється програмно в межах об’єкта UIViewController, вам слід встановити початковий вигляд панелі навігації, створивши відповідні об’єкти UINavigationItem і додавши їх до стеку об’єктів панелі навігації, тобто

  1. Створити екземпляр панелі навігації (UINavigationBar)
  2. Створіть екземпляр елемента панелі навігації (UINavigationItem), який керує кнопками та поданнями, які відображатимуться в об'єкті UINavigationBar. Зверніть увагу, що ви встановили заголовок на цьому кроці.
  3. (Необов’язково) Додайте праву / ліву кнопки (екземпляри UIBarButtonItem) до елемента панелі навігації.

Зразок коду Objective-C для згаданих кроків:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

Для швидкої версії автономної панелі навігації перегляньте цю відповідь .


6

Напишіть наведений нижче код у, viewDidLoadабо, можливо, буде краще підinitWithNibName:

  self.navigationItem.title = @"title";

Дякую.



2

Цей код у мене не працював

self.navigationItem.title = @"Title here";

Але це спрацювало.

self.title = "Title Name"

2

У перегляді вашого UIViewControllerDidLoad

self.navigationItem.title = "The title";  //In swift 4

або

ти можеш просто

self.title = "The title"

зробить трюк

Ви також можете помістити вищезазначене твердження в делегат програми для глобальної реплікації.


0

Використовуйте його в методі ViewDidLoad

Формат:

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

Приклад:

self.navigationItem.title = @"Title here";

0

дуже важливе зауваження: переконайтеся, що ви внесли зміни, про які згадувалося вище, у батьківському поданні методу viewDidLoad контролера або в панелі навігації батьків у розкадруванні


0

Іноді ви можете отримати випадок, коли ви оновлюєте заголовок, і це не викликає жодного ефекту, це може бути, коли у вас є власний перегляд, topItemтому, можливо, ви захочете оновити його так:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.