4 Stimmen

Text und Textfarbe der Zurück-Schaltfläche eines Navigationselements können nicht geändert werden

Ich versuche, die Backbutton-Textfarbe (auf rot) meiner Navbar mit dem folgenden Code einzustellen. (HINWEIS: Der nachstehende Code befindet sich bereits im "vorherigen" View-Controller, in diesem Fall im "Popular"-View-Controller:

//Customize Back button
UIView *backButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 40)];
UILabel *backButtonLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 40)];
backButtonLabel.text = @"back";
backButtonLabel.textColor = [UIColor colorWithHexString:@"cf212a"];
[backButtonView addSubview:backButtonLabel];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:backButtonView];
self.navigationItem.backBarButtonItem = backButton;

Ich erhalte jedoch nicht den gewünschten Effekt. Ich erhalte immer noch den Standardtext in weißer Farbe in der Hintergrundschaltfläche. Der Text wird auch nicht in "Zurück" geändert

enter image description here

Wie kann ich das Problem lösen?

4voto

Robin Punkte 9999

Das liegt daran, dass das Backbuttonitem ein Uibarbuttonitem ist, das auf dem nächsten Viewcontroller zu sehen ist, der über Ihren aktuellen Viewcontroller und nicht über den aktuellen Viewcontroller geschoben wird.

Wenn Sie die Zurück-Schaltfläche der aktuellen Ansicht, wie Sie versuchen, in Ihrem obigen Code zu tun, als verschieben Sie einfach den Code auf den View-Controller, der vor ihm angezeigt wird (unter ihm in den Stapel.), so dass, wenn Sie den View-Controller, für die Sie benutzerdefinierte Zurück-Schaltfläche, die in der vorherigen View-Controller festgelegt wurde zeigen möchten drücken. Dies liegt daran, dass die Zurück-Schaltfläche zum vorherigen View-Controller gehört, der Ihren neuen View-Controller drücken wird...

1voto

tc. Punkte 33176

Ich glaube, dass nur die title ist wichtig für die Zurück-Schaltfläche; sie dient dazu, einen langen Titel in der Mitte und einen kürzeren Titel in der Zurück-Schaltfläche zu haben.

Der einfachste Weg, eine benutzerdefinierte "Zurück-Schaltfläche" hinzuzufügen, ist die Einstellung UINavigationItem.leftBarButtonItem Sie müssen das Ziel/die Aktion entsprechend festlegen.

1voto

typeoneerror Punkte 53668

Ich habe gerade eine einfache UIViewController Unterklasse, die eine anpassbare Zurück-Schaltfläche hinzufügt, mit der Sie die Textfarben ändern können. Sie fügt im Wesentlichen einige willAppear / willDisappear Logik, um die Zurück-Schaltfläche so zu animieren, wie die UINavigationController bei der Verwendung des leftBarButtonItem Eigentum.

https://github.com/typeoneerror/BBCustomBackButtonViewController

1voto

SirRupertIII Punkte 11925

Das hat bei mir funktioniert.

Damit können Sie die Farbe aller Navigationsschaltflächen ändern:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

Ersetzen Sie redColor durch den folgenden Text, um die Farbe der Schaltflächen anzupassen:

colorWithRed:0/255.0 green:144/255.0 blue:200/255.0 alpha:1.0// pick your color using this

Stellen Sie sicher, dass Sie dies in den View-Controller einfügen, der den Push auslöst. Nicht der View-Controller, in dem Sie die Farbe der Schaltfläche "Zurück" sehen möchten. Wie Robin erklärt.

1voto

Zeev Vax Punkte 894

Die beste Methode, die ich gefunden habe, um sie global oder lokal einzustellen, ist

    [[UIBarItem appearance] setTitleTextAttributes:
         [NSDictionary dictionaryWithObjectsAndKeys:
         [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, 
         [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, 
         [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
         [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, 
      nil] 
        forState:UIControlStateNormal];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X