Frage

Ich entwickle gerade eine App, die sowohl iOS 4.3 als auch 5.0 unterstützt.

Mein Code funktioniert gut mit 5.0, führt aber in 4.3 zu einem kniffligen Fehler.

Problem ist:

Ich habe eine Ansicht mit einer Tabellenansicht.Diese Ansicht verfügt über eine Navigationsleiste mit Elementen der linken und rechten Navigationsleiste.Sobald ich die Zeile in der Tabellenansicht auswähle (und die entsprechende Ansicht erreiche) und zurückkehre, "verschwinden" sowohl die linken als auch die rechten Navigationsleistenelemente.

Ich war in den letzten Stunden über dieses Chaos hinweg, hat jemand eine Heilung bekommen?

Folgendes habe ich bereits getan:

Dies ist die Dienstprogrammmethode, die ich beim Laden der Ansicht aufrufe.

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


}

Ich habe versucht, dies sowohl in viewDidLoad als auch in viewWillAppear aufzurufen, aber vergebens.

So nenne ich das in viewController.

- (void)viewDidLoad
{

[super viewDidLoad];

//other setups here.

[Utility setNavigationBarContents:self]; 

}

War es hilfreich?

Lösung

Ich habe die Lösung durch Hinzufügen erhalten Dieser Code in meiner 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top