Question

Je développe maintenant une application qui prend en charge iOS 4.3 et 5.0.

Mon code fonctionne bien avec 5.0, mais se traduit par un coup délicat en 4.3.

Le problème est:

J'ai une vue avec une vue de table. Cette vue a une barre de navigation avec des éléments de barre de navigation gauche et droite. Une fois que j'ai sélectionné la vue dans la vue de la table (et atteint sa vue correspondante) et revient, les éléments de la barre de navigation gauche et droite "Vanish".

Je suis au-dessus de ce gâchis depuis quelques heures, quelqu'un a un remède?

C'est ce que j'ai déjà fait:

Il s'agit de la méthode utilitaire que j'appelle lors de la visualisation des charges.

+ (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];


}

Ont essayé d'appeler cela à la fois dans ViewDidload et ViewWillAppear, mais en vain.

C'est comme ça que j'appelle cela dans ViewController.

- (void)viewDidLoad
{

[super viewDidLoad];

//other setups here.

[Utility setNavigationBarContents:self]; 

}
Était-ce utile?

La solution

J'ai obtenu la solution en ajoutant ce code dans mon 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top