2012-02-22 13 views
2

iOS 4.3と5.0の両方をサポートするアプリを開発中です。ナビゲーションバーの発行iPhone 4.3

私のコードは5.0でうまく動作しますが、4.3ではトリッキーなバグがあります。

問題は次のとおりです。

私はそれでのtableViewとの見解を持っています。このビューには、左右のナビゲーションバー項目を持つナビゲーションバーがあります。テーブルビューで行を選択して(それに対応するビューに到達して)戻ったら、左右のナビゲーションバー項目が両方とも消えます。

私はここ数時間、この混乱を乗り越えてきました。

を。これは、ビューをロード私は呼んユーティリティメソッドです:

これは私がすでにやっていることです。

+ (void)setNavigationBarContents:(UIViewController *)view 
{ 


UIImage *topBarimage=[UIImage imageNamed:NAVIGATION_BAR_IMAGE]; 


if([view.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 

    [view.navigationController.navigationBar setBackgroundImage:topBarimage forBarMetrics:UIBarMetricsDefault]; 
} 
else 
{ 
    [view.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:topBarimage] aboveSubview:view.navigationController.navigationBar]; 

} 

UIImage *logo=[UIImage imageNamed:LOGO]; 
UIImageView *logoView=[[UIImageView alloc]initWithImage:logo]; 
view.navigationItem.titleView = logoView; 

UIImage *settingsButtonImage= [UIImage imageNamed:NAVIGATION_SETTINGS]; 
UIButton *rightBarButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
[rightBarButton setBackgroundImage: settingsButtonImage forState:UIControlStateNormal]; 
[rightBarButton addTarget: view action:@selector(settingsButton:) forControlEvents:UIControlEventTouchUpInside]; 
rightBarButton.frame = CGRectMake(0, 0, 50, 40); 
view.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: rightBarButton]; 

UIImage *logoutButtonImage= [UIImage imageNamed:LOGOUT]; 
UIButton *leftBarButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
[leftBarButton setBackgroundImage: logoutButtonImage forState:UIControlStateNormal]; 
[leftBarButton addTarget: view action:@selector(logout:) forControlEvents:UIControlEventTouchUpInside]; 
leftBarButton.frame = CGRectMake(0, 0, 65, 32); 
view.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: leftBarButton]; 


} 

viewDidLoadとviewWillAppearの両方でこの呼び出しを試みましたが、無駄です。

これは私がviewControllerでこれを呼び出す方法です。

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 

//other setups here. 

[Utility setNavigationBarContents:self]; 

} 
+0

を を追加することにより、溶液がViewWillAppear [ユーティリティsetNavigationBarContents:自己]でこのコードを試してみてくださいました。 – Splendid

+0

私はすでにこれを試したことがあります。あなたの素早い返信をありがとう – Guru

+0

バーのボタンアイテムだけが消えたり、ナビゲーションバーが消えてしまいますか? – Splendid

答えて

3

私はこのコードは私のappDelegate.mに

// added so that navigation bar background image works in version lower than 5.0 

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
UIImage *img = [UIImage imageNamed:NAVIGATION_BAR_IMAGE]; 
[img drawInRect:rect]; 
} 
@end 
関連する問題