2012-04-24 16 views
5

iPhoneアプリケーションを作成していて、ナビゲーションバーのtitleview位置にロゴを表示したいとします。私はUINavigationControllerのサブクラスを作り、のviewDidLoadで次の行を追加しました:seguesの後のビューでナビゲーションバーのタイトルビューが表示されない

self.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

(これはちょうど1ライン分の廃棄物のように見えるかもしれませんが、私は複数の場所でそれを使用していると私はしたくありません

これはナビゲーションコントローラの直下の子にはうまくいきます - ロゴが表示されます。しかし、セグを別のビューにプッシュすると、「同じ」ナビゲーションコントローラの(私の知る限り)ロゴの部分は持ち越されません。 (参考)

- > MyNavigationController - > SomeViewController - > SomeOtherViewController

私はまたしてSomeOtherViewControllerののviewDidLoadに入る試してみました:

self.navigationController.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

これはまだロゴが表示されません。チャンスをうかがっいくつかの後

、私は1)私はnavigationcontrollerののviewDidLoadでそのラインを持っていない場合2)私は、その後、SomeOtherViewControllerののviewDidLoadの2行目を持っていないことを発見した:

スタート:表示SomeViewController 。ロゴなし。 Click to segue:消える前に、SomeViewControllerのバーにロゴが表示されるようになりました。 私は今、Logoを持たないSomeOtherViewControllerを見ています。 クリックして戻る:SomeViewControllerのナビゲーションバーにはまだロゴがあります。

明らかに、私はナビゲーションコントローラの仕組みについて誤解しています。誰も私にこれを修正する方法を教えてもらえますか?

答えて

1

私が正しく理解していれば、もう1つのアプローチでそれを行うことができ、NavigationBar全体を画像で置き換えることができますか?そこにあなたのアイコンを配置することができます。

ナビゲーションバー全体を変更するのは簡単です。

if ([self.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
    [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

あなたはNavigationControllerviewDidLoad方法で配置する必要があり、このコード。次にNavigationControllerのスタックをプッシュするViewControllerで作業する必要があります。

0

self.navigationController.navigationBar.topItem.titleView = yourCustomView; 

self.navigationItem.titleView = yourCustomView; 

isteadを使用してみてくださいそして全くself.navigationController.navigationBar.topItem.titleViewを触れないでください。最初は両方ともyourCustomViewに設定しようとしましたが、私のカスタムビューは分割されて表示されてしまい、どこに行ったのか分かりませんでした。

関連する問題