Die "Zurück-Schaltfläche" von a UINavigationController
zeigt standardmäßig den Titel der letzten Ansicht im Stapel an. Gibt es eine Möglichkeit, stattdessen benutzerdefinierten Text in der Zurück-Schaltfläche zu haben?
ios
iphone
uinavigationcontroller
Ali Shafai
quelle
quelle
self.navigationController.navigationBar.topItem.title = @"Custom text";
Antworten:
Von diesem Link :
Wie Tyler in den Kommentaren sagte:
quelle
release
dasUIBarButtonItem
.UIBarButtonItemStyleBordered
einen Aufruf der Eigenschaftself.navigationItem.backBarButtonItem.style
. Dokumentation: developer.apple.com/library/ios/documentation/uikit/reference/…Sie können den Text im Interface Builder festlegen:
Wählen Sie das Navigationselement des ViewControllers aus, zu dem die Zurück-Schaltfläche zurückkehren soll:
Geben Sie im Attributinspektor des Dienstprogrammfensters Ihre Bezeichnung für die Schaltfläche "Zurück" ein:
Ich würde diesen Ansatz dem Setzen des Titels im Code wie in der akzeptierten Antwort vorziehen.
quelle
Ich benutze das:
quelle
Ich fand eine praktische Lösung dafür, indem ich einfach den Titel des Controllers festlegte, bevor ich einen anderen Controller auf den Stapel schob, wie folgt:
Stellen Sie dann sicher, dass Sie den Originaltitel
viewWillAppear
wie folgt eingeben:Dies funktioniert, weil das Standardverhalten
UINavigationController
beim Erstellen der Zurück-Schaltfläche während eines Push-Vorgangs darin besteht, den Titel des vorherigen Controllers zu verwenden.quelle
Der Titel der Schaltfläche "Zurück" ist standardmäßig der Titel der vorherigen Ansicht. Ein schneller Trick, den ich verwende, besteht darin, den folgenden Code in die .m-Datei der vorherigen Ansicht zu platzieren.
quelle
Fügen Sie in Ihrer Init-Methode den folgenden Code hinzu:
Fügen Sie dann eine einfache Methode hinzu, damit Viewcontroller geschlossen werden kann:
quelle
Fügen Sie den folgenden Code in viewDidLoad oder loadView hinzu
Ich habe es in iPhone und iPad mit iOS 9 getestet
quelle
navigationController
undtopItem
, z. B.:self.navigationController?.navigationBar.topItem?.title = "Custom Text"
Hinzufügen zu Zügels Antwort. Beachten Sie aus Apples Dokumenten, dass die Deklaration von backBarButtonItem wie folgt lautet:
Daher wird durch die Antwort von rein Speicher verloren gehen, da der synthetisierte Setter
retain
die Instanz, an die Sie ihn übergeben, übergibt, die niemals explizit freigegeben wird. Sie können dies beheben, indem Sieautorelease
Oder Sie können eine Variable auf die Instanz verweisen, um sie später explizit freizugeben:
Hoffe das hilft!
quelle
quelle
Ich habe etwas Interessantes entdeckt. Wenn Sie
UINavigationController
diepushViewController:animated:
Methode unterordnen und überschreiben und Folgendes tun: (Denken Sie daran, dass ich ARC verwende.)Dann für alle
ViewControllers
, die mit Ihrem Navigationscontroller gedrückt werden, wird automatisch die Schaltfläche "Zurück" angezeigt. Wenn Sie den Text für bestimmte Ansichtscontroller ändern möchten, können Sie versuchen, den Ansichtscontroller in eine bestimmte Klasse oder Ihr eigenes benutzerdefiniertes Protokoll umzuwandeln (das Ihr Ansichtscontroller erbt und von dem eine MethodebackButtonText
oder etwas Dummes wie diese stammt) Bestimmte Informationen auf dem Viewcontroller, die im Lieferumfang enthalten sind, können Sie den Text der Zurück-Schaltfläche anpassen. Jetzt wird der Text der Zurück-Schaltfläche an einer Stelle erledigt, die ausschließlich die Verantwortung tragen sollte. Ich muss zugeben, dass das Erstellen einer neuen Schaltfläche zum Ändern des Textes zum Kotzen ist, aber na ja.Kann sich jemand einen Grund vorstellen, warum man es nicht so macht? Zumindest müssen Sie nicht mit Viewcontroller-Titeln herumspielen oder daran denken, eine neue Zurück-Schaltfläche zu erstellen, bevor Sie den Viewcontroller auf dem Navigationscontroller drücken.
quelle
Die Antwort von rein funktioniert gut.
Beachten Sie, dass, wenn Sie mehr als einen Ansichts-Controller drücken, der geänderte Titel der Zurück-Schaltfläche für jeden von ihnen angezeigt wird, was möglicherweise nicht Ihren Wünschen entspricht.
In diesem Fall müssen Sie das benutzerdefinierte UIBarButtonItem jedes Mal erstellen, wenn Sie einen Ansichts-Controller drücken.
Stellen Sie außerdem sicher, dass Sie dies tun, bevor Sie den Ansichts-Controller drücken. Andernfalls wird ein Bildschirmschluckauf angezeigt, wenn sich der Titel ändert.
quelle
Wenn Sie Aubreys Vorschlag erweitern, können Sie dies im untergeordneten Ansichts-Controller tun:
Erstellen Sie zwei Variablen zum Speichern der alten Werte des übergeordneten Navigationsobjekts und des Navigationselements des übergeordneten Elements
in
viewDidLoad
den folgenden:in
viewWillDisappear
den folgenden:Es ist nicht perfekt. Sie werden sehen, wie sich der Titel der übergeordneten Ansicht ändert, wenn der neue Controller animiert wird. ABER dies erreicht das Ziel, die Zurück-Schaltfläche benutzerdefiniert zu beschriften und sie wie eine Standard-Zurück-Schaltfläche zu halten.
quelle
Setzen Sie dies in Sie ein
viewDidLoad
, hoffen Sie , dass es zu dem führt, was Sie suchenquelle
Wenn Sie den Titel im ARRIVING-Controller (manchmal mehr Logik) in Swift 3 festlegen möchten, gehen Sie wie folgt vor:
im kommenden Controller:
Normalerweise füge ich self.setBackButtonNavBar in eine Controller-Erweiterung ein.
quelle
Ich weiß, dass dies eine alte Frage ist und die Antworten irgendwie aktualisiert wurden!
Der einfache Weg ist, dies im übergeordneten ViewController zu tun:
dh derjenige, der Sie zum nächsten View Controller führt.
quelle
Wenn Sie dies im Code tun, entfernen Sie den Zurück-Button-Stil des
UINavigationConroller
. Wenn Sie in jeder Ihrer Ansichten ein Navigationselement hinzufügen, können Sie den Titel der hinteren Schaltfläche in der Ansicht festlegenStoryBoard
.quelle