ビューにナビゲーションバーがあり、そのナビゲーションアイテムのタイトルをプログラムで変更したい。
これはどのように行われますか?
回答:
Appleのドキュメントから:
ナビゲーションバーを使用する最も一般的な方法は、ナビゲーションコントローラーを使用することです。ナビゲーションバーをアプリのスタンドアロンオブジェクトとして使用することもできます。
したがって、UINavigationControllerがある場合、ナビゲーションバーのタイトルを設定するために必要なすべてのこと(これまでのすべての回答で説明されているように)
self.navigationItem.title = @"title";
ただし、UIViewControllerのオブジェクト内にプログラムで作成されたスタンドアロンのナビゲーションバーがある場合は、適切なUINavigationItemオブジェクトを作成し、それらをナビゲーションバーオブジェクトスタックに追加して、ナビゲーションバーの初期外観を設定する必要があります。
上記の手順の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バージョンについては、この回答を確認してください。
以下のコードを書くか、以下のviewDidLoad
方が良いかもしれませんinitWithNibName:
self.navigationItem.title = @"title";
ありがとう。
👇🏻も使用できます
[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
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";
非常に重要な注意:親ビューコントローラーのviewDidLoadメソッド、またはストーリーボードの親ナビゲーションバーで上記の変更を必ず行ってください
タイトルを更新しているのに効果がない場合があります。これは、カスタムビューがある場合であるtopItem
ため、次のように更新することをお勧めします。(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"