web-dev-qa-db-ja.com

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

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

viewController.title = @"title text";

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

ありがとう!

84
Arthur Skirvin

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

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

または

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

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

このようなもの:

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

self.navigationItem.title = @"title";を試すこともできます

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

121
Sorin Antohi

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

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

self.navigationItem.title = @"MyTitle";
33
Jigish

Navbarのタイトルを変更する場合(navbarの戻るボタンのタイトルではありません!)、このコードは機能します。

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

TabBarコントローラー内のnavBarのタイトルを変更する場合は、次を実行します。

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

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

myViewController.navigationItem.title = @"MyTitle";
5
testing

デフォルトでは、Navigation Controllerは「topitem」のタイトルを表示します

そのため、appdelegateのviewdidloadメソッドで次のことができます。私はそれをテストし、動作します

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

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

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

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

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

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

2
rmsh

動的なタイトルが必要なため、IBに設定しないのはそのためです。

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

おそらく、IBでダミー値に設定してからメソッドをデバッグして、ダミー値を持つコントローラーを確認してください-タイトルとして表示されると仮定して...

1
Chris Kimpton

TableViewController.m内から:

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

1
OneInABajilian

あなたのすべての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"
  }
}
1
kbpontius

私のために働いたのはself.titleLabel.text = @"New Title";でした

0
Peter Brockmann