web-dev-qa-db-ja.com

ナビゲーションバーのタイトルをプログラムで設定する方法は?

ビューにナビゲーションバーがあり、そのナビゲーションアイテムのタイトルをプログラムで変更したい。

これはどのように行われますか?

75
Doug Null

UIViewControllerで

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

Swift 3バージョン:

Navigation ControllerなしでNavigation Barを使用する場合、これを試すことができます:

navigationBar.topItem?.title = "Your Title"

助けてほしい。

23
Jerome

ViewDidLoadで

  self.title = @"Title";
10
Madhu

Appleドキュメント から:

Navigation Barを使用する最も一般的な方法は、Navigation Controllerを使用することです。ナビゲーションバーをアプリのスタンドアロンオブジェクトとして使用することもできます。

したがって、UINavigationControllerがある場合、ナビゲーションバーのタイトルを設定するために必要なすべてのこと(以前のすべての回答で説明したように)

self.navigationItem.title = @"title";

ただし、UIViewControllerのオブジェクト内にプログラムで作成されたスタンドアロンのナビゲーションバーがある場合、適切なUINavigationItemオブジェクトを作成し、ナビゲーションバーオブジェクトスタックに追加して、ナビゲーションバーの初期外観を設定する必要があります。

  1. ナビゲーションバー(UINavigationBar)のインスタンスを作成します
  2. UINavigationBarオブジェクトに表示されるボタンとビューを管理するナビゲーションバー項目(UINavigationItem)のインスタンスを作成します。このステップでタイトルを設定することに注意してください。
  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];

Swiftスタンドアロンナビゲーションバーのバージョンについては、 この回答 をご覧ください。

7
Wael Showair

以下のコードをviewDidLoadに記述するか、initWithNibName:

  self.navigationItem.title = @"title";

ありがとう。

6
Nikhil Bansal

また、????????を使用することもできます。

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
5
Surjeet Rajput

UIViewControllerのviewDidLoadで

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

トリックをします

上記のステートメントをアプリのデリゲートに入れて、グローバルに複製することもできます。

1
NickCoder

このコードはうまくいきませんでした

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

しかし、これはうまくいきました。

self.title = "Title Name"
1
Prasad A

非常に重要な注意:親ビューコントローラーのviewDidLoadメソッド、またはストーリーボードの親ナビゲーションバーで上記の変更を行ってください。

0
smoothumut

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

タイトルを更新していて、それが何の効果も引き起こしていない場合があります。これは、topItemにカスタムビューがある場合です。したがって、次のように更新する必要があります。_(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"_