7

私はその難しい方法を見つけました

navigationController.navigationBarHidden = NO;

navigationController.navigationBar.hidden = NO;

同じものではありません。実際、最初の構文を使用してナビゲーションバーを非表示にした場合、2番目の構文を使用して表示することはできません。単に何も実行されません。さらに、ナビゲーションバーを表示/非表示にする最初の構文は常に機能しますが、2番目の構文は時々機能しますが、常に機能するとは限りません。いつ機能するのか、いつ機能しないのかを正確に判断することはできませんでした。

他の人のコード(かなり大きなアプリ:20を超えるUIViewControllers)の修正に悩まされていたため、グローバル検索を実行して、navigationBar.hiddenそれをに置き換える必要がありましたnavigationBarHidden。その後、グローバル検索を実行して構文navigationBar setHidden:に置き換える必要がありました。navigationBarHiddenこれにより、最終的に問題が修正されました。

それでも、2つの異なるオプションが提供される理由と、それらの実際の違いは何かを理解したいと思います。

4

1 に答える 1

4

NavigationBarHiddenは、このナビゲーションのnavBar期間を非表示または表示するときに、アニメーションを適用します。UINavigationControllerHideShowBarDurationを使用して設定できます。

UINavigationBarここで、navigationBar.hiddenは、 (のサブクラスであるUIView)の可視性ステータスを直接変更します。

UINavigationBarはそのサブクラスが隠しブールプロパティを継承しているためUIView、保護またはプライベートに変更する方法はありません

アップルドキュメントから

ナビゲーションコントローラーは、ナビゲーションバーとナビゲーションツールバーの構成と表示を管理します。これらのビューを直接変更しないでください。代わりに、UINavigationControllerクラスのメソッドとプロパティを使用してそれらを操作する必要があります。NavigationBarHiddenプロパティまたはsetNavigationBarHidden:animated:メソッドを使用して、ナビゲーションバーを表示および非表示にすることができます。

于 2012-06-24T11:55:21.157 に答える