2011-12-20 10 views
-1

私は、iOS 4.3をターゲットとしたXcode 4にカスタマイズされたナビゲーションバーとツールバーを実装しました.iOS 5をターゲットとしたxcode 4.2をアップデートしています。 iOS 4.3シミュレータはうまく動作します。事前IOSで色とデータが表示されない5

+0

あなたの質問に与えられる唯一の答えは、「何かが間違っています」です。あなたは十分な情報を与えていない - あなたの "カスタマイズされたナビゲーションバーとツールバー"は何をしていますか?どのような「カスタマイズのもの」は機能していないのですか?ブレークポイントの設定をデバッグしてコードを実行しようとしましたか? –

+0

[ios4のナビゲーションバーのカスタマイズが可能なios5で動作する可能性があります](http://stackoverflow.com/questions/8255437/navigation-bar-customization-in-ios4-doesnt-work-in-ios5) – jrturton

答えて

2

おかげであなたはのdrawRectカテゴリメソッドを使用してナビゲーションバーをカスタマイズしていますか?

同じ問題があった場合、IOS5ではdrawRectメソッドが呼び出されず、IOS5にはナビゲーションバーをカスタマイズするための関数が組み込まれています。

IOS5には、それをカスタマイズするために使用できる新しい外観プロパティがあります。そのため、外観プロパティが存在するかどうかを確認してから、新しい外観メソッドを使用する必要があります。

IOSのバージョン<で実行しているときに使用しているdrawRectカテゴリがまだあります。次に、ビューコントローラで外観オブジェクトが存在するかどうかを確認するチェックを行います。その、今では以下のIOS 5との両方のために動作します:

私のviewDidLoadメソッドナビゲーションバーの背景を設定し、それ以下のようになります。

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

あなたは内のすべてのナビゲーションバー用のAppearanceオブジェクトをも設定することができます次のコードを使用してappDelegate:

if ([UINavigationBar respondsToSelector:@selector(appearance)]){ 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"HeaderBar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

上記のコードは、ナビゲーションバーの1つのインスタンスではなく、UINavigationBarクラスの外観を設定しています。つまり、IOSはすべてのナビゲーションバーに外観を適用します。

関連する問題