Wie kann ich die Navigationstaste in iOS 7 und höher ohne Titel anpassen? (dh nur mit dem Pfeil)
self.navigationItem.leftBarButtonItem = self.editButtonItem;
Ich frage mich nur, ob sie ein self.backButtonItem haben.
ODER
etwas wie das?
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemBACK
target:self action:@selector(back)];
Antworten:
Es ist eigentlich ziemlich einfach, hier ist was ich tue:
Ziel c
Swift 2
Swift 3
Fügen Sie diese Zeile in den Ansichts-Controller ein, der auf den Stapel verschoben wird ( den vorherigen Ansichts-Controller ). Die neu gedrückte Schaltfläche zum Zurücksetzen des View Controllers zeigt nun an, was Sie für initWithTitle eingegeben haben. In diesem Fall handelt es sich um eine leere Zeichenfolge.
quelle
prepareForSegue
View-Controller eingefügt und es hat perfekt funktioniert.Ich habe eine einfache Möglichkeit gefunden, meine Zurück-Schaltfläche mit einem iOS-Einzelpfeil zu erstellen.
Nehmen wir an, Sie haben einen Navigationscontroller, der von ViewB zu ViewA wechselt. Wählen Sie in IB die Navigationsleiste von ViewA aus. Die folgenden Optionen sollten angezeigt werden: Titel, Eingabeaufforderung und Zurück-Schaltfläche.
ViewA Navigationsleistenoptionen
Der Trick besteht darin, in den Optionen des vorherigen Ansichts-Controllers (Ansicht A) den Titel der Zurück-Schaltfläche Ihres Schicksals-View-Controllers (ViewB) auszuwählen . Wenn Sie die Option "Zurück" nicht ausfüllen, setzt iOS den Titel "Zurück" automatisch mit dem vorherigen dem Titel des View Controllers. Sie müssen diese Option also mit einem einzelnen Leerzeichen füllen.
Füllen Sie die Option "Zurück" aus
Das Ergebnis:
quelle
Back Button
auf ein einzelnes Leerzeichen (dh sowohl ViewA als auch ViewB) eingestellt sindVerwenden Sie einfach ein Bild!
OBJ-C :
SWIFT 4 :
Icon-Back.png
[email protected]
[email protected]
quelle
navigationController?.interactivePopGestureRecognizer?.delegate = self
macht den Trick, um die Geste desiOS7 hat neue Schnittstellenregeln, daher ist es besser, mindestens den Zurückpfeil beizubehalten, wenn Sie eine UIView drücken. Es ist sehr einfach, den "Zurück" -Text programmgesteuert zu ändern. Fügen Sie einfach diesen Code hinzu, bevor Sie die Ansicht verschieben (oder prepareForSegue, wenn Sie StoryBoards verwenden):
Dadurch wird der Standardtext "Zurück" geändert, der Zurückpfeil im iOS7-Stil bleibt jedoch erhalten. Sie können auch die Farbtonfarbe für den Zurückpfeil ändern, bevor Sie auf die Ansicht klicken:
Hoffe das hilft dir!
quelle
Sie müssen nicht viel tun. Sie können dasselbe durch das Storyboard selbst erreichen.
Gehen Sie einfach zum Root-Navigations-Controller und geben Sie ein Leerzeichen ein. Denken Sie nicht an den Controller, für den Sie die Zurück-Schaltfläche ohne Titel haben möchten, sondern an den Root-Navigations-Controller.
quelle
Während Kyle Begemans Antwort völlig ausreicht, ist es ziemlich ärgerlich, diesen Code in jedem möglichen View Controller zu haben. Am Ende hatte ich eine einfache
UINavigationItem
Kategorie. Vorsicht, hier sind Drachen! Entschuldigung, ich meine, swizzling:quelle
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
( Quelle ) - vielleicht etwas weniger elegant, aber das Zischen fühlte sich wie ein Overkill anUINavigationItem
sehr eigene Methode ist und keine Vererbung erforderlich ist . Und es_cmd
ist sehr unwahrscheinlich, dass es sich um einen Getter handelt. Trotzdem ist es ein guter Punkt. Wenn Sie einen dieser zahlreichen Helfer in Ihrem Projekt haben, stellen Sie sicher, dass Sie ihn auch hier verwenden.EDIT: 2014-04-09: Als ich an Ansehen gewonnen habe, tut es mir leid, weil ich diesen Trick nicht mehr benutze. Ich empfehle Kyles Antwort. Beachten Sie auch, dass die
self
vonself.navigationItem.backBarButtonItem
nicht der Ansichts-Controller ist, sondern die Schaltfläche Zurück angezeigt wird, sondern der vorherige Ansichts-Controller, der zurückgesetzt werden soll.Wenn Sie keinen Titeltext für den vorherigen Ansichts-Controller benötigen, füllen Sie den Titel einfach mit einer leeren Zeichenfolge.
Dies verhindert, dass mit Chevron auf dem Push-View-Controller "zurück" angezeigt wird.
BEARBEITEN: Auch wenn Sie nicht leeren Titeltext verwenden, kann das Festlegen des Titels des vorherigen Ansichts-Controllers in
viewWillAppear:
Werken außer dem Titel blinken, wenn der Ansichts-Controller angezeigt wird. Ich denke, "The Twitter App" scheint subtiler zu hacken, um das Flackern zu vermeiden.quelle
Dies funktioniert, entfernt jedoch den Titel des vorherigen Elements, auch wenn Sie darauf zurückgreifen:
Setzen Sie diese Eigenschaft einfach auf
viewDidLoad
den Push-View-Controller.quelle
viewWillAppear
so eingestellt, dass er immer richtig eingestellt ist.So mache ich es und der einfachste, funktionierendste und klarste Weg, es zu machen.
Dies funktioniert beim Einbetten
Navigation Controller
Swift 3
Wenn
viewDidLoad
ich dies dem View Controller hinzufüge, soll die Schaltfläche "Zurück" nur ein Pfeil sein.Der Unterschied zu @Kyle Begemans Antwort besteht darin, dass Sie dies auf dem View-Controller so aufrufen, dass die Zurück-Schaltfläche nur ein Pfeil sein soll, nicht auf dem Push-Stack-View-Controller.
quelle
Sie haben nicht wie gewünscht Zugriff auf das Navigations-BackButtonItem. Sie müssen Ihre eigene Zurück-Schaltfläche wie folgt erstellen:
Und natürlich:
quelle
Ziel: Anpassen aller Zurück-Schaltflächen an
UINavigationBar
ein weißes SymbolSchritte: 1. in der Methode "didFinishLaunchingWithOptions" von AppDelete:
2.in der
viewDidLoad
Methode der gemeinsamen SuperklasseViewController
:quelle
SWIFT 4
Wenn Sie benutzerdefinierte Zurück-Schaltflächen erstellen und deren Titel entfernen möchten, verwenden Sie bitte den folgenden Code im Ansichts-Controller, der die neue Schaltfläche ausführt:
Gehen Sie für eine universellere Verwendung wie folgt vor:
Erstellen Sie eine universelle Funktion wie folgt:
Verwenden Sie es dann in den View Controllern wie folgt:
quelle
Einfacher Hack von iOS6 funktioniert auch unter iOS7:
Bearbeiten: Verwenden Sie diesen Hack nicht. Siehe Kommentar für Details.
quelle
Sie können dies verwenden. Dies funktioniert perfekt für mich, indem ich nur ein
UIButton
als Custumview für das hinzufügeUIBarButtonItem
.Probieren Sie den folgenden Code aus
quelle
Erstellen Sie eine
UILabel
mit dem gewünschten Titel für Ihren Root-View-Controller und weisen Sie ihn dem View-Controller zunavigationItem.titleView
.Setzen Sie nun den Titel auf eine leere Zeichenfolge und der nächste Ansichts-Controller, den Sie drücken, hat eine Zurück-Schaltfläche ohne Text.
quelle
quelle
Alle Antworten lösen das Problem nicht. Es ist nicht akzeptabel, den Titel der Zurückschaltfläche in jedem Ansichts-Controller zurückzusetzen. Wenn Sie dem Titel einen Versatz hinzufügen, wird der nächste Titel des Ansichts-Controllers weiterhin nach rechts verschoben.
Hier ist die Methode mit Methoden-Swizzling. Erstellen Sie einfach eine neue Erweiterung für UINavigationItem
quelle
Ich habe den folgenden Code in viewDidLoad angewendet und es funktioniert:
Nur zum Aktualisieren verwende ich das Vektorsymbol
quelle
Sie können UINavigationController in Unterklassen unterteilen, sich selbst als Delegat festlegen und das backBarButtonItem in der Delegatmethode festlegen
navigationController:willShowViewController:animated:
quelle
Titel zurücksetzen leer
Bild zurück ändern
quelle
Ich benutze diese Lösung seit iOS 5 oder so ohne Probleme. Ich habe eine Dienstprogrammfunktion erstellt, die ich in meinen View Controllern aufrufe. Sie müssen dies entweder in viewDidLoad oder an einem beliebigen Punkt danach tun.
In einigen Fällen ist das Navigationselement möglicherweise bereits vorhanden, in anderen Fällen muss es erstellt werden. Dies berücksichtigt beide Fälle, ohne den Titel des Navigationselements zu beeinträchtigen. Sie können den Titel durch einfaches Übergeben entfernen
@""
.quelle
Der einzige Weg, der für mich funktionierte, war:
AKTUALISIEREN:
Als ich das Segue-Animations-Flag in "wahr" geändert habe (es war vorher falsch), war der einzige Weg, der für mich funktioniert hat:
quelle
Wenn Sie zwei ViewController (FirstVC, SecondVC) in Navigation Controller eingebettet haben und möchten, gibt es in SecondVC nur einen Zurückpfeil.
Sie können dies in ViewDidLoad von FirstVC versuchen
Wenn Sie dann in SecondVC drücken, sehen Sie, dass es nur einen Zurückpfeil gibt
quelle
Wenn Sie die tintColor Of NavigationBar festlegen, fügen Sie ein benutzerdefiniertes Bild mit der Schaltfläche "Zurück" ohne Titel hinzu, dessen Farbton die Bildfarbe widerspiegelt. Bitte folgen Sie diesem Apple Documentaion Link.
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/index.html#//apple_ref/doc/uid/TP40012857-UIView-SW7
quelle
Überprüfen Sie diese Antwort
Wie ändere ich den Namen der UINavigationController-Zurück-Schaltfläche?
Stellen Sie den
title
Textstring
wie unten mit einem Leerzeichen einIch habe nicht genug Ruf, um Kommentare hinzuzufügen :)
quelle
Ich habe eine Erweiterung geschrieben, um dies zu vereinfachen:
quelle
Sie können den Titel in viewWillDisappear in @ "" des aktuellen ViewControllers ändern und den Titel bei erneuter Anzeige auf den vorherigen Wert zurücksetzen.
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
Um die obige Antwort von Thomas C zu ergänzen, funktioniert das Einfügen eines einzelnen Leerzeichens manchmal nicht und Sie müssen immer wieder Leerzeichen hinzufügen.
Sie werden wissen, dass Sie erfolgreich waren, wenn Sie "Balkenschaltflächenelement -" unter "Navigationselement" sehen. Das ist in der Dokumentübersicht (Editor-> Dokumentübersicht anzeigen). Sobald Sie das obige Bild sehen, können Sie einige Leerzeichen löschen und prüfen, ob es noch funktioniert.
quelle
Genau wie Kyle Begeman fügen Sie den obigen Code auf Ihrem Root-View-Controller hinzu. Alle Unteransichts-Controller werden angewendet. Wenn Sie dies in der Methode initWithCoder: hinzufügen, können Sie den Stil für Root-View-Controller in xib-, Storyboard- oder codebasierten Ansätzen anwenden.
quelle