Ich wollte den Text von der Schaltfläche "Zurück" von a entfernen UIBarButtonItem
und nur den blauen Chevron in der Navigationsleiste belassen. Denken Sie daran, dass ich für iOS 7 entwickle. Ich habe verschiedene Methoden ausprobiert, einschließlich, aber nicht beschränkt auf:
Dies ist die Bildmethode, die mir nicht gefallen hat (das Bild sah fehl am Platz aus):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Eine andere Methode, die ich ausprobiert habe, war diese, die einfach nicht funktionierte (nichts wurde angezeigt):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Was ich erreichen wollte, sind so etwas wie die Zurück-Tasten in der iOS 7 Music App, die nur einen einzigen Chevron enthielten.
Vielen Dank.
ios
uinavigationbar
uibarbuttonitem
uinavigationitem
Pan Ziyue
quelle
quelle
Antworten:
Anschließend können Sie den Titel des Zurück-Button-Elements entfernen.
Wenn Sie Storyboard verwenden, können Sie die Zurück-Schaltfläche des Inspektors für Navigationsattribute mit Leerzeichen festlegen.
quelle
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
ebenfallsVerwenden Sie Folgendes, um den Titel der Zurück-Schaltfläche für einen Ansichts-Controller festzulegen, ohne dessen Titel zu ändern:
Ziel c:
Schnell:
Dies wird auf dem View Controller ausgeführt, den Sie sehen würden, wenn Sie auf die Schaltfläche "Zurück" klicken. Das heißt, anstatt '<Einstellungen' zu sehen, möchten Sie nur '<' sehen, dann würden Sie dies auf Ihrem SettingsViewController in Ihre einfügen
init
. Dann werden die Probleme des Titels nicht angezeigt, wenn Sie sich den View Controller selbst ansehen.quelle
Wenn Sie Storyboards verwenden, können Sie zu
Attributes Inspector
den ViewControllern gehenNavigation Item
(klicken Sie aufNavigation Bar
) und dieBack Button
Eigenschaft auf "" (ein Leerzeichen) setzen. Dadurch wird der Titel der Zurück-Schaltfläche auf ein Leerzeichen gesetzt, sodass der Chevron sichtbar bleibt. Sie müssen sich nicht mit Code anlegen.Beachten Sie, dass hierdurch der
Back Button
Titel für die Zurück-Schaltfläche festgelegt wird, die zu dem View Controller wechselt, der von dem darüber geschobenen Button verschoben wurde, und nicht für denBack Button
, der in diesem Controller angezeigt wird!quelle
Dies funktioniert für mich, um nur den "hinteren" Chevron ohne Text anzuzeigen:
Legen Sie diese Eigenschaft im
viewDidLoad
View Controller fest, der die Navigationsleiste anzeigt, und es wird den Trick ausführen.Hinweis: Ich habe es nur in iOS 7 getestet, was im Rahmen der Frage liegt.
quelle
-viewDidLoad
den VC verschoben, damit ich den Back-Text nicht möchte. Was ich jedoch später herausfand, war, dass, wenn ich die 2. VC ausnavigationController
dem Titeltext platziere, kurz danach erscheint, nicht sofort. Ich denke, ein Video würde dies besser veranschaulichen, also hier ist es: LinkWenn Sie den Titel der Schaltfläche festlegen, verwenden Sie @ "" anstelle von @ "".
--BEARBEITEN--
Ändert sich etwas, wenn Sie andere Saiten ausprobieren? Ich verwende den folgenden Code selbst erfolgreich:
backString ist eine Variable, die auf @ "" oder @ "Back" gesetzt ist, je nachdem, ob ich iOS 7 oder eine niedrigere Version verwende.
Zu beachten ist, dass sich dieser Code nicht im Controller für die Seite befindet, für die ich die Zurück-Schaltfläche anpassen möchte. Es befindet sich tatsächlich im Controller davor auf dem Navigationsstapel.
quelle
setLeftBarButtonItem:backButton
stattdessen setzen würde, wäre nichts da.Manchmal ist es hilfreich, Dinge im Kontext zu sehen. Hier ist ein minimales Projekt, das den "Zurück" -Text verbirgt, aber dennoch den Pfeil zeigt.
Storyboard
Es gibt einen Show-Übergang von der Schaltfläche "Show Second View Controller" zum zweiten View Controller.
Ich habe dem zweiten Ansichts-Controller auch ein Navigationselement hinzugefügt, damit es einen Titel hat. Dies ist optional. Die Zurück-Taste ist davon nicht betroffen.
Code
FirstViewController.swift
SecondViewController.swift
Alternative Methode (nur IB, kein Code)
Wählen Sie im Storyboard das Navigationselement für den ersten Ansichts-Controller (nicht den zweiten). Geben Sie einfach ein Leerzeichen für den Text der Zurück-Schaltfläche ein.
quelle
quelle
Unter iOS7 hat Apple zwei neue Eigenschaften in UINavigationBar eingeführt: "backIndicatorTransitionMaskImage" und "backIndicatorImage".
Einfach einmal anrufen:
Es wird ein benutzerdefiniertes Bild anstelle des Standard-Chevron-Glyphen gerendert, wobei die Farbtonfarbe des keyWindow übernommen wird.
Und um den Titel zu entfernen, schlage ich Kamaros 'Antwort vor. Denken Sie daran, diesen Code auf dem View Controller aufzurufen, der Ihren neuen View Controller pusht. Entfernen des Titeltextes eines iOS UIBarButtonItem
quelle
Ich hatte nicht viel Erfolg mit den bereitgestellten Antworten, aber ich fand eine wirklich einfache Lösung. In Ihrem Storyboard können Sie auf das Navigationselement Ihres UIViewControllers klicken und den Text der Zurück-Schaltfläche festlegen. Ich habe es auf ein einzelnes Feld gesetzt und es gab mir das Verhalten, das ich suchte.
quelle
Dies funktionierte bei mir in iOS10. Rufen Sie dies über viewDidLoad des View Controllers auf.
quelle
Eine einfache Lösung für dieses Problem, das sowohl unter iOS7 als auch unter iOS 6 funktioniert, besteht darin, die benutzerdefinierte Titelansicht in viewDidLoad festzulegen:
Dann können Sie in viewWillAppear: sicher anrufen
Da es sich bei Ihrer Titelansicht um eine benutzerdefinierte Ansicht handelt, wird sie beim Zurückschieben in den Navigationsstapel nicht überschrieben.
quelle
[self.navigationItem.backBarButtonItem setTitle:@" "];
viewWillAppear aufgerufen, aber es hat nicht mit Ansichten funktioniert, die nach dem Schließen einer modalen Ansicht angezeigt wurden.Eigentlich kann man das mit nur einem Trick machen:
Überschreiben Sie die
UINavigationBar
Klasse und fügen Sie diese Codezeile hinzu:Initialisieren Sie dann Ihre
UINavigationController
mit dieser benutzerdefinierten UINavigationBar-Klasse .. usw.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Hoffe das hilft
quelle
Mit DonnaLeas Antwort konnte ich etwas zusammenschustern. So erscheint die Lösung in meiner UIViewController-Unterklasse:
Das Problem mit der ursprünglichen Antwort besteht darin, dass der Titel vom Controller entfernt wird, wenn Sie darauf zurückgreifen. Der Versuch, den Titel in viewWillDisappear zurückzusetzen, ist zu spät im Übergangsprozess. Dadurch wird der Titel wieder eingerastet, anstatt gut zu animieren. Der willMoveToParentViewController erfolgt jedoch früher und ermöglicht das korrekte Verhalten.
Vorsichtsmaßnahme: Ich habe dies nur mit einem normalen UINavigationController Push / Pop getestet. In anderen Situationen kann es zu zusätzlichem unerwartetem Verhalten kommen.
quelle
In der prepareForSegue: -Methode Ihres ersten ViewControllers setzen Sie diesen Ansichtstitel auf @ "". Wenn also die nächste Ansicht verschoben wird, wird der vorherige ViewController-Titel angezeigt, der @ "" lautet.
Das einzige Problem dabei ist, dass Ihre vorherige Ansicht keinen Titel hat, wenn Sie auf die Schaltfläche "Zurück" klicken. Sie können sie also in viewWillAppear erneut hinzufügen:
Ich mag diese Lösung nicht sehr, aber sie funktioniert und ich habe keinen anderen Weg gefunden, dies zu tun.
quelle
SWIFT 3
quelle
Keine der Antworten hat mir geholfen. Aber ein Trick hat es geschafft - ich habe gerade den Titel des Ansichts-Controllers gelöscht, der kurz vor dem Drücken gedrückt hat (wohin die Zurück-Taste geht).
Wenn die vorherige Ansicht keinen Titel hat, enthält die Zurück-Schaltfläche unter iOS 7 nur einen Pfeil ohne Text.
In
viewWillAppear
der Push-Ansicht habe ich den Originaltitel zurückgesetzt.quelle
Ich hatte das gleiche Problem und habe es so gemacht.
--BEARBEITEN--
Dies ist eine Lösung, wenn Sie den Titeltext aller UIBarbuttonItem wirklich entfernen möchten. Wenn Sie nur den Titel des Schaltflächenelements der hinteren Leiste entfernen möchten, gibt es keine einfache und bequeme Lösung. In meinem Fall habe ich, da ich nur wenige UIBarButtonItems habe, die Titeltext anzeigen müssen, nur die titleTextAttributes dieser spezifischen Schaltflächen geändert. Wenn Sie genauer sein möchten, verwenden Sie den folgenden Code, der nur die Schaltflächen der Navigationsleiste ändert:
quelle
UIControlStateHighlighted
als auchBei Verwendung der Unterklasse
navigationController
wird das "Zurück" entfernt.Ich benutze dies, um es dauerhaft über die App zu entfernen.
quelle
quelle
Schaltfläche "Zurück" Titel der Navigationsleiste
quelle
Hier ist, was ich mir mache, was einfacher ist, den Titel der Zurück-Schaltfläche zu entfernen
quelle
Swift 3.1 Sie können dies tun, indem Sie die Delegate-Methode von UINavigationController implementieren. Der Titel wird nur mit der Schaltfläche "Zurück" ausgeblendet. Das Bild mit dem Zurückpfeil und die Standardfunktionalität werden weiterhin angezeigt.
quelle
Sie können auch Folgendes verwenden:
Das funktioniert bei mir
quelle
quelle
Weltweit perfekte Lösung
quelle
Ich erstelle eine benutzerdefinierte Klasse für
UINavigationController
und wende sie auf alle Navigationscontroller in meiner App an. Innerhalb dieser benutzerdefiniertenUINavigationController
Klasse setze ich denUINavigationBar
Delegaten auf,self
sobald die Ansicht geladen ist.Dann implementiere ich die Delegate-Methode:
Auf diese Weise ordne ich einfach allen meinen Navigationscontrollern meine benutzerdefinierte Klasse zu und lösche den Titel von allen Zurück-Schaltflächen. Und nur aus Gründen der Übersichtlichkeit habe ich den Titel für alle meine anderen Ansichts-Controller immer
viewWillAppear
so festgelegt, dass der Titel immer aktualisiert wird, bevor die Ansicht angezeigt wird (falls er durch solche Tricks entfernt wird).quelle
Das Eingeben eines einzelnen Leerzeichens für das Navigationselement "Zurück" funktioniert !!
quelle
Wenn Sie wie ich eine benutzerdefinierte Ansicht anstelle der verwenden
UINavigationBar
und mit der Zurück-Taste nicht weiterkommen, müssen Sie ein wenig arbeiten, was sich etwas unübersichtlich anfühlt.Es scheint, als ob es nicht präsentiert wird, egal was es versucht, einen Titel zu zeigen. Dies bedeutet, dass es angezeigt und dann versteckt wird, bevor es gezeichnet wird und das Problem löst.
quelle
quelle
Ich habe eine sehr einfache Null-Konfigurationskategorie erstellt, um alle Titel der Zurück-Schaltfläche in unserer App auszublenden. Sie können sie hier überprüfen . Diese Frage wurde bereits beantwortet, kann aber für andere hilfreich sein.
BEARBEITEN:
.h Datei
.m Datei
quelle