88

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

viewController.title = @"title text";

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

ありがとう!

4

13 に答える 13

154

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

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

また

bar.topItem.title = @"title text";
于 2010-02-17T13:01:29.990 に答える
124

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

このようなもの:

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

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

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

于 2010-02-17T12:58:17.917 に答える
33

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

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

self.navigationItem.title = @"MyTitle";
于 2011-03-09T23:20:38.990 に答える
13

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

self.navigationController.topViewController.title = @"info";
于 2013-08-27T13:02:06.293 に答える
5

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

myViewController.navigationItem.title = @"MyTitle";
于 2010-09-22T16:00:39.210 に答える
4

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

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

navController.navigationBar.topItem.title = @"Test";
于 2011-03-20T22:22:43.783 に答える
4

TabbarController に統合されたナビゲーション コントローラーがありました。これはうまくいきました

self.navigationItem.title=@"title";
于 2012-03-29T09:56:30.280 に答える
2
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

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

于 2011-10-05T07:24:10.063 に答える
2

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

于 2013-02-18T11:01:56.133 に答える
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"
  }
}
于 2015-04-08T16:58:35.883 に答える
1

IB で設定しない理由は、動的なタイトルが必要だと思います。

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

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

于 2010-02-17T12:59:27.617 に答える