2009-06-06 5 views
16

UIViewControllerのtitleプロパティの目的は何ですか?タイトルは既にnavigationItem.titleで設定できませんか?self.title vs self.navigationItem.title

どちらも機能しているように見えますが、なぜこのように見える重複機能があるのだろうと思っています。

答えて

8

ビューコントローラのタイトルは、プログラマとしての慣習と便利さの両方です。 ...

self.title = @"Some Title"; 

または

[self setTitle:@"Some Title"]; 

を呼び出すと、あなたのビューコントローラのタイトルを取得する必要がある(ナビゲーションバーのような)任意のオブジェクトがそうすることができることを保証します。 navigationItem.titleを使用すると、必要に応じてこのタイトルを乗り越えることができますが、代わりにコントローラのタイトルを設定するためにはよりスタイリッシュな方法が考えられます。

IMOあなたがいずれかを実行することができますが、前者はあなたにいくつかの入力を保存します;-)

Cheers-

7

navigationItem.titleと設定すると、ビューの上部にナビゲーションバーのタイトルが設定されます。これは、前のビューのタイトル(navigationItem.titleで設定されている)が戻るボタンのテキストになるため、新しいView Controllerをプッシュするときに重要です。さらに、プロジェクトにナビゲーションバーがない場合、navigationItem.titleは機能しません。

アップルはUIViewControllerのtitleプロパティについて次のように説明します。

このコントローラが管理するビューを表すローカライズされた文字列。

3

のUIViewControllerは、titleプロパティを持っています。 navigationItemとtabBarItemの両方でtitleプロパティをオーバーライドします。私たちがtabbarとnavigationcontrollerを持つアプリケーションを持っていて、self.title = @ "somethng"と設定すると、そのタイトルはnavigationTitleとtabBartitleの両方に設定されます。

20

UIViewControllerでは、titleとnavigationItem.titleが異なります。一例:UITabBarControllerのViewController(NavigationController内にある)がある場合、self.titleを設定すると、タブの名前とトップタイトルがオーバーライドされます。 self.navigationItem.titleを設定すると、タイトルバーのみが変更され、タブバー名は変更されません。

関連する問題