2012-06-25 5 views
5

self.navigationController.navigationItemとself.navigationItemの違いは何ですか?私は、アプリケーション全体を通してUINavigationControllerを使用しています。また、viewControllerのviewDidLoadメソッドの1つでself.navigationController.navigationItem.rightBarButtonItemsを使用すると、配列は空です。しかし、self.navigationItem.rightBarButtonItemsを使用すると、私はバーのボタン項目を見ます。 2つのコールの違いは何ですか?ありがとう!self.navigationController.navigationItemとself.navigationItemの相違点

答えて

5

UINavigationControllerは、UIViewControllerのサブクラスです。そのため、独自のnavigationItemプロパティを持ち、UIViewControllerから継承しました。このプロパティは、ナビゲーションコントローラを別のナビゲーションコントローラ内に埋め込む場合にのみ使用されるため、このプロパティは無視する必要があります。 UIViewController+UINavigationControllerItemのドキュメントから

0

、以下を参照してください、私たちはビューコントローラに直接navigationItemプロパティを使用する必要があります。それはUIViewControllerから継承年代から

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

UINavigationControllernavigationItem性質を持っていますが、それは勝った設定しますビューコントローラのナビゲーションプロパティに影響しません。

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

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

(lldb) expr -- @import UIKit 
(lldb) po self.navigationController.navigationItem 
<UINavigationItem: 0x7f865c811740> 
関連する問題