2015-06-10 4 views
6

I-Taste Bild für alle View-Controller mit dem folgenden Code in AppDelegate auf Navigationsleiste am Einstellung zurück:wie Bild auf Standard festlegen Zurück-Taste des Navigationsleiste

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Jetzt i in einem meiner Ansicht-Controller Wähle ein neues Bild aus der Galerie und speichere es. Ich möchte, dass, sobald ich dieses newimage speicher, das "Bild" des Zurückknopfes durch dieses "newimage" ersetzt wird.

Ich versuchte folgenden Code in viewWillAppear jeden einzelnen View-Controller

[self.navigationItem.backBarButtonItem setBackButtonBackgroundImage:newimage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

und versuchte

[self.navigationItem.backBarButtonItem setImage:new]; 

dies auch. Aber alles vergebens. Bild wird nur geändert, wenn ich meine App erneut ausführen und damit Code in Appdelegate aufgerufen wird.

PLZ Hilfe!

Antwort

5

Schließlich macht auf diese Weise endete:

den Code aus AppDelegate entnommen und jedes folgenden Codezeilen in viewWillAppear und jeder View-Controller

UIBarButtonItem * barButtonItem = [[UIBarButtonItem alloc] initWithImage:newimage 
                    style:UIBarButtonItemStylePlain 
                    target:self 
                    action:@selector(goBack)]; 
[self.navigationItem setLeftBarButtonItem:barButtonItem]; 

Nun zurück Taste wi ll arbeiten nicht mehr, so dass seine Funktionalität explizit

in @selector 'goBack' bereitgestellt werden muss
- (void)goBack 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
1

Try UIBarButtonItem wie auf diese Weise in ios7 eingestellt werden: -

UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];  
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:temp style:UIBarButtonItemStyleBordered target:self action:@selector(action)]; 

Hier ist ein Original-Beitrag ist in Apple Dev Center Diskussionsforen

Zur Unterstützung der Version iOS7 sowie niedrigere dann Sie System überprüfen -Version und setzen Code wie: -

UIImage *temp=nil; 

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) 
{ 
    temp = [UIImage imageNamed:@"btn-back.png"]; 
} 
else 
{ 
    temp = [[UIImage imageNamed:@"btn-back.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]; 
} 
1

Sie müssen Ihren Code in

setzen
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

wird es richtig funktionieren.

0

Stellen Sie sicher, dass Ihre UI verwandte Methoden im Hauptthread nennen:

dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.navigationItem.backBarButtonItem setBackButtonBackgroundImage:newimage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
     }); 
15

Für Set besitzen zurück Bild Schaltfläche Sie benutzerdefinierte Aussehen festlegen müssen. und rufen Sie die Datei appdelegate.h auf.

Hinweis: Sie müssen einmal in appdelegate.h setzen und dann gilt es im ganzen Projekt gelten. muss nicht in jedem einzelnen Controller deklariert werden.

überprüfen Sie dies bitte.

//in Appdelegate.h file 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[self customappearance]; //Method declaration 
} 

und erklären Sie Ihr Bild mit Bildnamen in Custom-Look.So,

-(void)customappearance 
{ 
//int imageSize = 20; 
UIImage *myImage = [UIImage imageNamed:@"icon_back"]; //set your backbutton imagename 
UIImage *backButtonImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
// now use the new backButtomImage 
[[UINavigationBar appearance] setBackIndicatorImage:backButtonImage]; 
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage]; 


/* 
UIImage *backbutton=[[UIImage imageNamed:@"icon_back"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch]; 

//resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch]; 

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backbutton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];*/ 
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) 
                forBarMetrics:UIBarMetricsDefault]; 

} 

und Ihre Navigationsleiste zurück Schaltfläche wie folgt aussehen.

Custom back image in navigation bar

+1

Das sollte die richtige Antwort sein !!!! – hyd00

Verwandte Themen