1

.xibにナビゲーションバーを追加しました。たくさんのことをカスタマイズしたいので、そうしました。ナビゲーションコントローラーでその画面のナビゲーションバーを使用したい。

navBarという名前のアウトレットを作成し、次のことを行いました。

[self.navigationController.navigationBar = navBar;

しかし、navigationBarは読み取り専用であると書かれています。既存のナビゲーションコントローラーを、画面に追加したナビゲーションバーにリンクすることはできますか?

4

3 に答える 3

1

実際にはUINavigationBarを使用したくないと思われるかもしれません。リファレンスドキュメントに記載されているように:

UINavigationBarクラスは、階層コンテンツをナビゲートするためのコントロールを実装します。これはバーであり、通常は画面の上部に表示され、階層を上下に移動するためのボタンが含まれています。主なプロパティは、左(戻る)ボタン、中央のタイトル、およびオプションの右ボタンです。これらのそれぞれにカスタムビューを指定できます。

したがって、カスタマイズを計画している場合は、ボタンの追加、色/背景の変更、不透明度、非表示などを超えてください。ナビゲーションバーのルックアンドフィールを模倣するUIViewを作成する方がよい場合があります。

UIViewにナビゲーションバーのグラデーションの外観を与える方法の例を次に示します。

それははるかに柔軟で実際には非常に簡単ですが、あなたはあなたの前にたくさんの読書とテストを持っています:)。

追加しようとしているボタンだけの場合は、代わりにUIToolbarを使用する方がよい場合があります。

于 2012-07-24T07:51:47.363 に答える
0

InterfaceBuilderではナビゲーションバーを管理しません。また、ナビゲーションコントローラーのnavigationBarプロパティを設定しようとはしません。

変更を加えるには、navigationBarのnavigationItemプロパティに変更を加えます。

[self.navigationController.navigationBar setItems:newNavItems];

背景画像の設定や半透明にするなど、ナビゲーションバーに他の変更を加えることもできます

self.navigationController.navigationBar.translucent = true;
[self.navigationController.navigationBar setBackgroundImage:img forBarMetrics:barMetrics];
于 2012-07-23T19:44:45.987 に答える
0

そんなことはできません。ナビゲーション コントローラーのナビゲーション バーには多くの設定が埋め込まれているため、読み取り専用のプロパティであり、変更することはできません。

インターフェイスビルダーを介してそれを行う必要があることを正確に達成しようとしています。つまり、最新の API では、元の navcontroller の navbar をカスタマイズすることで、数行のコードで必要なことをすべて簡単に実行できるはずです。

于 2012-07-23T19:41:37.463 に答える