Ich möchte den Text von der Schaltfläche "Zurück" entfernen, aber das Symbol beibehalten. Ich habe versucht
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
Dadurch werden jedoch der Text und das Symbol vollständig entfernt.
Ich weiß, dass dies bereits eine Antwort hat, aber Sie können dies auch im Code tun (falls Sie mit Schreibfedern arbeiten).
Fügen Sie das Obige im ersten Ansichts-Controller hinzu.
Beachten Sie, dass Sie dies für jeden View Controller tun müssen, der pusht. Wenn Sie also 3 Ansichts-Controller haben und den hinteren Text von allen entfernen möchten, müssen Sie die Zeile in den Ansichts-Controllern 1 und 2 hinzufügen.
quelle
.Plain
wurde geändert in.plain
. Kein Kapital p.Nachdem ich viel gesucht habe , habe ich die beste und einfachste Lösung gefunden. Dies wirkt sich auf alle viewController aus, die in Swift 4.2 geschrieben wurden und auch in Swift 5 funktionieren
quelle
Wenn Sie den Titel einer Zurück-Schaltfläche von einem Push- View-Controller entfernen möchten
<Settings
, beispielsweise<
in subSettingsViewController, müssen Sie den Titel backBarButtonItem in der viewWillDisappear () -Methode von SettingsViewController festlegen .Ziel c:
Schnell:
quelle
.Plain
wurde geändert in.plain
. Kein Kapital p.Der Text der Zurück-Schaltfläche hängt vom Titel der Master-Ansicht ab.
Der Trick besteht darin, den Titel zu löschen, wenn die Masteransicht verschwindet, und ihn erneut festzulegen, wenn er erneut angezeigt wird:
quelle
Wenn Sie einen Zurückpfeil wünschen, fügen Sie den folgenden Code in die AppDelegate-Datei in die didFinishLaunchingWithOptions-Methode ein.
Für Swift
quelle
In meinem Fall hat dies für benutzerdefinierte Symbole und Titel den Trick getan (Swift 4)
quelle
Ich habe dieses Problem gelöst, indem ich dem StoryBoard-Titel des vorherigen ViewControllers ein "" hinzugefügt habe. Nur ein Leerzeichen, nicht leer; D.
quelle
Endlich die perfekte Lösung gefunden.
Fügen Sie einfach ein transparentes Bild hinzu und fügen Sie den folgenden Code in Ihr AppDelegate ein.
quelle
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment
Hack verwendet, den die meisten anderen Antworten empfehlen, aber er war auf dem iPhone X für View Controller mit langen Titeln defekt. Diese Lösung funktioniert einwandfrei.in schnell 4
quelle
Für Swift 4+ setzen Sie diese Zeilen in
AppDelegate
atdidFinishLaunchingWithOptions
quelle
Das funktioniert bei mir
quelle
Wenn Sie über einen ViewControllerA verfügen und zum ViewControllerB navigieren möchten, sollten Sie im ViewControllerA das aktuelle Navigationselement mit einem neuen UIBarButtonItem und den Titel auf eine Zeichenfolge mit Leerzeichen setzen, bevor Sie zu einem anderen Ansichtscontroller wechseln:
Setzen Sie den Titel auf eine Zeichenfolge mit einem Leerzeichen. Sie können weder nil noch "" (leere Zeichenfolge) festlegen, da der Standardwert nil ist
quelle
Fügen Sie diesen Code in jede VC ein, die eine andere drückt
quelle
quelle
So entfernen Sie alle Viewcontroller in einem Navigationscontroller-Stack:
Unterklasse UINavigationController und fügen Sie Folgendes hinzu:
quelle
Manchmal funktioniert es nicht, nur die Titelfarbe zu ändern, falls der Titel lang ist. Weil der Titel der Navigationsleiste möglicherweise nach links verschoben wird. Um dies zu verhindern, müssen Sie möglicherweise den Titel der Balkenschaltfläche horizontal verschieben, um ihn transparent zu machen:
quelle
Für mich war das der Trick:
Beachten Sie, dass es anscheinend funktioniert , wenn Sie nur den Titel festlegen, ohne das backBarButtonItem zu ändern . Aber wenn Sie versuchen, mit einer Geste zurückzukehren und dann abzubrechen und auf dem Push-View-Controller zu bleiben, wird der Titel zurück angezeigt.
Arbeiten in Swift 4
quelle
Sie sollten die Navigationsleiste des Controllers auswählen, von der aus die Zurück-Schaltfläche zeigt, und "" in das Feld Zurück-Schaltfläche eingeben.
Wenn Sie beispielsweise einen A-Controller auf einen B-Controller schieben, fügen Sie Leerzeichen in die Navigationsleiste eines Controllers ein.
quelle
Xcode 10, Swift 4+
Ähnliche Antwort wie bei den anderen hier, aber es ist erwähnenswert, dass Sie, wenn der Text immer noch nicht gelöscht wird, auf Leertaste und dann auf Eingabe klicken müssen.
quelle
Einzelheiten
Lösung
1. Erstellen Sie eine benutzerdefinierte Klasse des UINavigationController
2. Fügen Sie die UIViewController-Erweiterung hinzu
3. Aktualisieren Sie Ihre ViewController-Klasse
Vollständige Probe
Ergebnis
quelle
Eine Alternative, um alles
ViewControllers
für mich außer Kraft zu setzen , war das ErweiternUINavigationController
und EinstellenbackBarButtonItem
destopViewController
.Swift 5
auf Xcode 11.2.1:quelle
Der einfachste Weg, dies programmgesteuert zu tun, besteht darin,
backBarButtonItem
über die übergeordnete Ansichtssteuerung (eine Steuerung, die Push aufruft) festzulegen.Weitere Details hier https://sarunw.com/posts/how-to-remove-text-from-uinavigationbar-back-button/
quelle
Sie können Text von der Zurück-Schaltfläche mit einer Delegatmethode von entfernen
UINavigationController
.quelle
In Xcode 9.2 mit Swift hat es so funktioniert:
quelle
Für den Fall, dass wir den vorherigen Ansichts-Controller überhaupt nicht steuern können (dh wenn wir in einem Framework arbeiten), können wir den Titel der Zurück-Schaltfläche wie folgt löschen:
Sie navigieren zum letzten Element des Navigationsstapels und löschen dessen hinteren Titel. Stellen Sie sicher, dass Sie das Original speichern, wenn unser View Controller angezeigt wird:
und weisen Sie es dann neu zu, um keinen Teil der App zu stören:
quelle
Dies wird Ihr Problem lösen:
quelle
Ich habe ein paar Antworten ausprobiert und kann sie nicht in allen Fällen zum Laufen bringen. Dies ist also eine Problemumgehung, um den Titel der Navigationsleiste nicht zu beeinflussen, wenn sie festgelegt ist.
quelle
Die einfache programmatische Weise, ohne unerwünschte Nebenwirkungen, ist es, die Initialisierung navigationItem.backBarButtonItem mit einem leeren Element in der awakeFromNib Methode des Quellenregler (die Sie von der Navigation):
Hinweis: Wenn Sie die Schaltfläche "Zurück" später wie bei der Methode " viewDidLoad ()" initialisiert haben , verlieren Sie das Zurückwischen Funktion "Zurückwischen" (wenn Sie vom linken Rand nach rechts Sie einen Schritt zurück in den Navigationsstapel).
Wenn Sie dann unterschiedliche Back-Button-Texte für verschiedene Ziel-Controller wünschen und Segues verwenden, können Sie den Titel in der Methode prepare (for segue:, sender :) wie folgt festlegen :
quelle