Wie kann ich den Text der Zurück-Schaltfläche vor einem UINavigation-Controller ausblenden? Ich werde nur das "<" und nicht das "<Zurück" haben
103
Wie kann ich den Text der Zurück-Schaltfläche vor einem UINavigation-Controller ausblenden? Ich werde nur das "<" und nicht das "<Zurück" haben
Antworten:
Im Interface Builder können Sie das Navigationselement des vorherigen Controllers auswählen und die
Back Button
Zeichenfolge so ändern, dass die Schaltfläche "Zurück" angezeigt wird. Wenn Sie es beispielsweise leer lassen möchten, setzen Sie einfach ein Leerzeichen.Sie können es auch mit dieser Codezeile ändern :
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Oder in Swift :
self.navigationItem.backBarButtonItem?.title = ""
quelle
Back Button
IB bereits leer ist, fügen Sie einfach ein Leerzeichen hinzuBack
und zeigen Sie den Pfeil.Sie können dies auch über das Storyboard tun. Im Attributinspektor des Navigationselements des vorherigen Controllers können Sie im Feld Zurück die Schaltfläche "" festlegen. Siehe Bild unten. Ersetzen Sie "Ihr Titel hier" durch "". Auf diese Weise erzielen Sie das gewünschte Ergebnis. Sie müssen sich nicht mehr mit dem Titel herumschlagen.
Programmatisch könnten Sie verwenden
[self.navigationItem.backBarButtonItem setTitle:@" "];
Dabei bezieht sich self auf den Controller, der den gewünschten View-Controller drückt.
Beispiel vor, nach der Navigationsleiste
Vor
Nach dem
quelle
backBarButtonItem
funktioniert das programmgesteuerte Festlegen nicht, das Festlegen über das Storyboard jedoch.backBarButtonItem
programmgesteuerte Einstellung funktioniert für mich in iOS 9.Sie können Folgendes implementieren
UINavigationControllerDelegate
:Älterer Swift
Swift 4.x.
backBarButtonItem
istnil
standardmäßig aktiviert und wirkt sich auf den nächsten Push-Controller aus. Sie müssen ihn also nur für alle Controller festlegenquelle
Das Setzen des Titels der Zurück-Taste auf
@""
odernil
funktioniert nicht. Sie müssen die gesamte Schaltfläche leer lassen (ohne Titel oder Bild):Ziel c
Schnell
Dies sollte auf dem Ansichts-Controller erfolgen, der sich im Navigationsstapel über Ihrem Ansichts-Controller befindet (dh von wo aus Sie über die
pushViewController
Methode zu Ihrem VC navigieren ).quelle
Eine andere Lösung für dieses Problem in Situationen, in denen Sie viele View-Controller haben, besteht darin, einen
UIAppearance
Proxy zu verwenden, um den Titeltext der Zurück-Schaltfläche wie folgt effektiv auszublenden:Bei dieser Lösung wird der Text als winziger klarer Punkt gerendert, ähnlich wie beim manuellen Festlegen des Titels der Zurück-Schaltfläche
@" "
, mit der Ausnahme, dass alle Schaltflächen der Navigationsleiste betroffen sind.Ich empfehle dies nicht als allgemeine Lösung für das Problem, da es alle Schaltflächen der Navigationsleiste betrifft. Das Paradigma wird umgedreht, sodass Sie auswählen können, wann die Schaltflächentitel angezeigt werden sollen, anstatt wann die Titel ausgeblendet werden sollen.
Um zu entscheiden, wann die Titel angezeigt werden sollen, stellen Sie entweder die Titeltextattribute nach Bedarf manuell wieder her oder erstellen Sie eine spezielle Unterklasse
UIBarButtonItem
, die dasselbe tut (möglicherweise mit einem anderenUIAppearance
Proxy).Wenn Sie eine App haben, in der die meisten Titel der Zurück-Schaltfläche ausgeblendet werden müssen und nur wenige (oder keine) der Navi-Schaltflächen Systemschaltflächen mit Titeln sind, ist dies möglicherweise das Richtige für Sie!
(Hinweis: Die Änderung der Schriftgröße ist erforderlich, obwohl die Textfarbe klar ist, um sicherzustellen, dass bei langen Titeln der Titel der mittleren Navigationsleiste nicht verschoben wird.)
quelle
Fügen Sie den folgenden Code in viewDidLoad oder loadView hinzu
Ich habe es in iPhone und iPad mit iOS 9 getestet
quelle
Sie können diese Objective-C-Kategorie hinzufügen, damit alle von einem Navigationscontroller erstellten "Zurück" -Schaltflächen keinen Text enthalten. Ich habe es gerade zu meiner AppDelegate.m-Datei hinzugefügt.
PS - (Ich weiß nicht, wie diese Erweiterung mit Swift funktioniert, sie hatte seltsame Fehler. Änderungen sind willkommen, um eine Swift-Version hinzuzufügen.)
quelle
override
es schnell geht. Sehr interessante FrageIch habe einige oben und unten ausprobiert, aber sie haben nicht funktioniert. Das hat bei mir funktioniert:
quelle
Das einzige, was ohne Nebenwirkungen funktioniert, ist das Erstellen einer benutzerdefinierten Zurück-Schaltfläche. Solange Sie keine benutzerdefinierte Aktion angeben, funktioniert auch die Foliengeste.
Wenn Sie möchten, dass alle Zurück-Schaltflächen keine Titel enthalten, müssen Sie diese benutzerdefinierte Zurück-Schaltfläche in allen View-Controllern einrichten: /
Es ist sehr wichtig, dass Sie ein Leerzeichen als Titel und nicht als leere Zeichenfolge festlegen.
quelle
Um den Text programmgesteuert vom Backbutton zu entfernen, der unter Code verwendet wird, funktioniert dies ab xcode7.
self.navigationController.navigationBar.topItem.title = @ "";
oder
manuell Wählen Sie in Storyboards die Navigationsleiste auf dem Ansichts-Controller aus und fügen Sie "" in den Text der Zurück-Schaltfläche ein.
das wird funktionieren. Vielen Dank
quelle
self.navigationController?.navigationBar.topItem?.title = " "
in Xcode 9 und gearbeitet!Die aktuelle Antwort funktionierte nicht. Ich wollte den Titel komplett entfernen , aber der Text "zurück" verschwand nicht.
Kehren Sie zum vorherigen Ansichts-Controller zurück und legen Sie dessen title-Eigenschaft fest:
Funktioniert NUR, wenn der vorherige View Controller keinen Titel hat
quelle
@""
.Alternative Möglichkeit: Verwenden Sie eine benutzerdefinierte NavigationBar-Klasse.
Das heißt, dies entfernt das gesamte Projekt zurück. Legen Sie einfach eine benutzerdefinierte Klasse für UINavigationController fest.
quelle
Setzen Sie den Titel der vorherigen VC auf "" Zeichenfolge mit Leerzeichen. und Titel mit der Zurück-Schaltfläche werden durch eine einzelne Leerzeichenfolge ersetzt.
Bei Zurück drücken Sie erneut, um den Titel in viewWillAppear auf den ursprünglichen zurückzusetzen.
quelle
Verwenden Sie einen benutzerdefinierten Benutzer
NavigationController
, der überschreibtpushViewController
quelle
Viele Antworten schon, hier sind meine zwei Cent zu diesem Thema. Ich fand diesen Ansatz sehr robust. Sie müssen dies nur in viewController einfügen, bevor Sie fortfahren.
Swift 4:
quelle
Ich habe alles in diesem Beitrag versucht. Die einzige funktionierende Lösung ist @ VoidLess's
Hier ist die gleiche Antwort, aber vollständiger
quelle
Dies ist meine Auflösung für iOS11. Ich ändere das Erscheinungsbild von UIBarButtonItem in applicationDidFinishLaunchingWithOptions:
Sie können den Y-Versatz nicht ändern, da dadurch auch die Position der Schaltfläche für die hintere Leiste in iOS11 geändert wird. In iOS10 und darunter ist dies jedoch in Ordnung.
quelle
Swift 3.1 Sie können dies tun, indem Sie die Delegate-Methode von UINavigationController implementieren.
quelle
Für diejenigen, die den Titel der Zurück-Schaltfläche global ausblenden möchten.
Sie können swizzle
viewDidLoad
vonUIViewController
so.Verwendung:
quelle
In Swift3
Wenn Sie die globale Einstellung festlegen
quelle
Ich hatte damit zu kämpfen, weil ich einen benutzerdefinierten Navigationscontroller hatte. Mit diesem Code konnte ich den Text des hinteren Elements in allen Ansichts-Controllern in meiner benutzerdefinierten Navigations-Controller-Klasse entfernen
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Dadurch werden alle Titel der hinteren Elemente mithilfe dieses benutzerdefinierten Navigationscontrollers entfernt.
quelle
Wenn Sie auf iOS 13 und höher abzielen , können Sie diese neue API verwenden , um den Titel der Zurück-Schaltfläche global auszublenden .
quelle
In iOS 11 haben wir festgestellt, dass das Festlegen
UIBarButtonItem
der Textschrift / -farbe des Erscheinungsbilds auf einen sehr kleinen Wert oder eine klare Farbe dazu führt, dass andere Balkenelemente verschwinden (das System berücksichtigt die Klasse der UIBarButton-Elemente nicht mehr, sondern konvertiert sie in a_UIModernBarButton
). Wenn Sie auch den Versatz des Rücktextes auf Offscreen setzen, blinkt dies während des interaktiven Pop.Also haben wir geschwatzt
addSubView
:quelle
quelle
Der hintere Text stammt vom View des letzten View Controllers
navigationItem.title
undnavigationItem.title
wird automatisch von festgelegtself.title
. So einfach, um das Problem zu lösen, ist Haken hooksetTitle:
stellen Sie sichernavigationItem.title = @""
Geben Sie diesen Code ein
AppDelegate.m
, damit es in Ordnung ist。Weitere Informationen unter https://www.jianshu.com/p/071bc50f1475(Simple Chinease)
quelle
Meine Lösung: - XCode: 10.2.1 - Swift: 5
quelle
XCode 11.5 Swift 5
Eine sehr einfache - wenn auch etwas hackige - Möglichkeit, dies programmgesteuert zu tun, wenn Sie die benutzerdefinierte Zurück-Schaltfläche nicht benötigen, besteht darin, die Schriftgröße in dem View-Controller, den Sie auf den Stapel schieben, auf Null zu setzen und so etwas aufzurufen von viewDidLoad
quelle
Endlich die perfekte Lösung gefunden, um Standard-Backtext in der gesamten App auszublenden.
Fügen Sie einfach ein transparentes Bild hinzu und fügen Sie den folgenden Code in Ihr AppDelegate ein.
quelle
Die folgende Methode funktioniert unter iOS 11 und kann unter anderen iOS-Versionen nicht zum Absturz gebracht werden. Wenn Sie dies tun, wird Ihre App möglicherweise in der App Store-Überprüfung abgelehnt, da sowohl UIModernBarButton als auch UIBackButtonContainerView private APIs sind. In AppDelegate platzieren.
quelle
Schnelle Version, funktioniert weltweit perfekt:
quelle
solution
. Wie @limfinity zeigte, wird es universell für alle UIBarButtonItems in der gesamten App