iPhone:ナビゲーションバーのタイトルを設定する


87

やあみんな。私はまだiPhoneの開発にかなり慣れていないので、ナビゲーションバーのタイトルを変更する方法を理解するのに少し苦労しています。このサイトの別の質問で、誰かが使用を推奨しました:

viewController.title = @"title text";

しかし、それは私にとってはうまくいきません...これを達成するためにUINavigationControllerを追加する必要がありますか?それとも、UIViewControllerサブクラスからのアウトレットですか?それが役立つ場合は、IBでナビゲーションバーを定義し、UIViewControllerサブクラスでそのタイトルを設定しようとしています。これは私に頭痛の種を与えるそれらの単純なもののもう一つです。self.title = @ "タイトルテキスト"; でviewDidLoadinitWithNibNameどちらも機能しませんでした。何が起こっているのか、そしてそれを正しく行う方法を知っている人はいますか?

ありがとう!

回答:


154

.titleプロパティを有効にするには、ViewControllerがUINavigationControllerの子である必要があります。UINavigationBarが単なるビューの場合は、タイトルを含むナビゲーションアイテムをプッシュするか、最後のナビゲーションアイテムを変更する必要があります。

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

または

bar.topItem.title = @"title text";

8
ワオ。私はこの1時間、フォーラムやドキュメントを真剣に閲覧してこれを理解しようとしてきましたが、これよりも複雑になると確信していました。このコードはとても単純で、IBで何もいじる必要はありませんでした。完璧!KennyTM、あなたはロックします。私が思い出すと、あなたは私のNSDateの質問にも答えて、辞書を研究するように私を設定しました。あなたはこのサイトで私の新しいお気に入りの人です。たくさんのご協力に感謝します!
Arthur Skirvin 2010

5
あなたのコメントは私を笑顔にして不思議に思いました:誰かがここSOで友達を作ったことがありますか?通常、ここの誰もが非常に役に立ちますが、人間の感情を表現していないようです(もちろん、彼/彼女がイライラしているときの
アスケーを除く

ストーリーボード互換のソリューションについては、Sorinの回答を参照してください。
devios1 2013

本当に多くの時間を節約するあなたの答えをありがとう。:) @kennytm
jerry_sjtu

124

viewDidLoadメソッドのコードですべてを実行しているUIViewController場合は、追加する必要がありますself.title = @"title text";

このようなもの:

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

あなたも試すことができます self.navigationItem.title = @"title";

また、navigationItemがnullでないかどうかを確認し、ナビゲーションバーにカスタム背景を設定した場合は、タイトルがnullなしで設定されているかどうかを確認します。


@ SorinA、ありがとう。ナビゲーションバーのタイトルを付けるのに適した方法です。
2010

33

使用には1つの問題があります self.title = @"title";

タブバーと一緒にナビゲーションバーを使用している場合、上記の行はタブバーアイテムのラベルも変更します。これを回避するには、@ testingが提案したものを使用してください

self.navigationItem.title = @"MyTitle";

13

(ナビゲーションバーの戻るボタンのタイトルではなく)ナビゲーションバーのタイトルを変更したい場合は、このコードが機能します。

self.navigationController.topViewController.title = @"info";

9

tabBarコントローラー内のnavBarのタイトルを変更する場合は、次のようにします。

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

viewDidAppearは、これを解決しようとして2時間後に、私のためにトリックを行いました。ありがとう:)
Tchelow 2014年

topItem.titleは、ナビゲーションバーのタイトルである場合とそうでない場合があります。戻るボタンのないトップレベルの画面の場合は、タイトルが設定されます。ただし、戻るボタンがある場合、topItem.titleは実際には戻るボタンのタイトルです。
user2962499 2016年

5

私のナビゲーションベースのアプリでは、これを行います:

myViewController.navigationItem.title = @"MyTitle";

4

TabbarControllerにナビゲーションコントローラーを統合しました。これはうまくいった

self.navigationItem.title=@"title";

4

デフォルトでは、ナビゲーションコントローラーは「topitem」のタイトルを表示します

したがって、appdelegateのviewdidloadメソッドで実行できます。私はそれをテストしました、そしてそれは働きます

navController.navigationBar.topItem.title = @"Test";

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

このコードは機能しました。


SOへようこそ。投稿ありがとうございます。この情報をコメントとして投稿することをお勧めします。詳細については、回答方法をご覧ください。
セルジュベロフ2012年

2

ストーリーボードを使用している場合は、コントローラーをクリックして[プロパティ]タブに切り替え、そこにタイトルテキストを設定できます。


1

ダイナミックなタイトルが必要だと思います。そのため、IBで設定しないのです。

そして、私はあなたのviewControllerオブジェクトがNIBで指定されたものだと思いますか?

おそらく、それをIBでダミー値に設定してから、メソッドをデバッグして、どのコントローラーがダミー値を持っているかを確認します。


1

TableViewController.m内から:

self.navigationController.navigationBar.topItem.title = @ "Blah blah Some Amazing title";


1

そこにいるすべてのSwift-ersにとって、これは私にとって完璧に機能しました。これは特に、タイトルの設定を行うための短い方法の1つでもあります。

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"
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.