1

UINavigationItem でタイトルを変更しようとしています

// this modify the title
self.navigationItem.title    = @"Any title";
// this does not
navigationItem.title    = @"Any title";

なんで?

4

1 に答える 1

2

navigationItem使用しているオブジェクトではありません。は、を とともにself.navigationItem使用するときにオンデマンドで作成される読み取り専用プロパティです。カスタムを作成することは確かにできますが、それは標準的なセットアップではしばしば嫌われます。その必要はありません。UIViewControllerUINavigationControllerUINavigationItemUINavigationController

に関してはself.title、それは単なる へのショートカットself.navigationItem.titleです。ショートカットの理由は、独自のカスタム コンテナーを含め、必要に応じて他のコンテナー タイプの他の場所で使用できるためです。

何が起こっているかを解体する場合。基本的な UINavigationController がそうする、navigationItem にアクセスした場合にタイトルをロードして、これが発生している可能性があります。

- (UINavigationItem)navigationItem
{
    if (!_navigationItem) {
        _navigationItem = [[UINavigationItem alloc] initWithTitle:self.title];
    }

    return _navigationItem;
}

Apple のコメントについては、こちらをご覧ください: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp /UIViewController/navigationItem

于 2013-01-16T19:39:51.817 に答える