5

self.navigationController.navigationItemとself.navigationItemの違いは何ですか?アプリ全体でUINavigationControllerを使用していますが、viewControllerの1つのviewDidLoadメソッドの1つでself.navigationController.navigationItem.rightBarButtonItemsを使用すると、配列が空になります。ただし、self.navigationItem.rightBarButtonItemsを使用すると、バーボタンアイテムが表示されます。2つの呼び出しの違いは何ですか?ありがとう!

4

2 に答える 2

5

AUINavigationControllerはのサブクラスですUIViewControllernavigationItemそのため、から継承した独自の独立したプロパティがありUIViewControllerます。このプロパティは無視する必要があります。これは、ナビゲーションコントローラーを別のナビゲーションコントローラー内に埋め込む場合にのみ使用されるためです(これは、正しい心の誰もが行うことはありません)。

于 2012-06-25T21:40:22.017 に答える
0

のドキュメントから、UIViewController+UINavigationControllerItem以下を参照してください。ViewControllerでnavigationItemプロパティを直接使用する必要があります。

// Created on-demand so that a view controller may customize its navigation appearance.
@property(nonatomic,readonly,strong) UINavigationItem *navigationItem;

UINavigationControllernavigationItemから継承するため、プロパティもありますUIViewControllerが、設定してもViewControllerのナビゲーションプロパティには影響しません。

簡単なテストから、これらのナビゲーション項目も等しくないことがわかります。

(lldb) po self.navigationItem
<UINavigationItem: 0x7f865c99ec50>

(lldb) expr -- @import UIKit
(lldb) po self.navigationController.navigationItem
<UINavigationItem: 0x7f865c811740>
于 2016-02-29T23:44:41.907 に答える