Zurücksetzen der Schaltfläche Text in Swift


118

Wie entfernen Sie den Text zurück Text.

current back button: <Back 
desired back button: <AnythingElse 

Nichts davon gearbeitet haben:

self.navigationItem.backBarButtonItem?.title = "Back" 
self.backItem?.title = "" 
self.navigationController?.navigationBar.backItem?.title = "" 
self.navigationItem.backBarButtonItem?.title = "" 
self.navigationController?.navigationItem.backBarButtonItem?.title="Back" 
self.navigationController?.navigationBar.backItem?.title = "" 
self.navigationController?.navigationItem.backBarButtonItem?.title 
394

Die Zurück-Taste auf die, nicht die aktuell präsentierten auf dem Bildschirm vorherigen View-Controller gehört.
Um die Zurück-Taste ändern Sie es vor schieben, auf dem View-Controller, der die Segue initiiert aktualisieren sollte:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let backItem = UIBarButtonItem() 
    backItem.title = "Something Else" 
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed 
} 

Swift 3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let backItem = UIBarButtonItem() 
    backItem.title = "Back" 
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed 
} 
+5

Dank aktualisieren Sie wissen nicht, wie viele Stunden ich nur für dieses kleine Detail ausgegeben habe (der vorherige Controller) 07 feb. 162016-02-07 16:29:56

+3

Wenn ich eine Million Mal upvote, würde ich es tun. Ich kann dir nicht sagen, wie lange ich mich gefragt habe, warum es nicht funktioniert (war vorher auf dem Ziel-Controller) 24 mai. 162016-05-24 21:18:34

+6

"Die Zurück-Taste gehört zum vorherigen Ansicht-Controller", das ist die wertvollste Antwort, die ich zu diesem Thema gefunden habe! Vielen Dank! 01 dez. 162016-12-01 14:38:25

  0

Ich denke, es ist in Ordnung, es so einzustellen. Aber ich empfehle dir, wenn möglich, den 'Titel' deines vorherigen' viewControllers' im Navigationsstack zu setzen. Das ist viel besser Ansatz. 10 apr. 172017-04-10 16:37:30

+1

Wenn Sie 'title' einstellen, ändert sich der * title *, nicht nur die Zurück-Taste. 11 apr. 172017-04-11 00:39:28

+1

Ich habe "self.navigationController! .navigationBar.topItem! .backBarButtonItem = backItem" anstelle von "navigationItem.backBarButtonItem = backItem" hinzugefügt und es funktioniert auf Swift 3. Vielen Dank. 06 mai. 172017-05-06 10:35:50

  0

Vielen Dank, Dies ist die richtige Antwort. 15 jun. 172017-06-15 12:54:51

  0

Dies ist das Recht, dies zu tun. Auch möchte ich darauf hinweisen, wenn Sie nicht verwenden, um Ansichten zu veröffentlichen, es funktioniert immer noch so lange wie Sie die BackBarButtonItem vor dem Herausspringen Ihrer Ansicht ändern. 29 jun. 172017-06-29 03:18:25

+1

Interessanterweise, wenn Sie Titel als nichts sein wollen, müssen Sie es auf "", nicht "" setzen. "" allein lässt viel Platz und beeinträchtigt die Titelansicht. 12 aug. 172017-08-12 00:05:01

+1

Es funktioniert auch in 'viewDidLoad'. 18 okt. 172017-10-18 16:24:32

  0

Dies ist die einzige Lösung, die für mich funktionierte. Vielen Dank 11 nov. 172017-11-11 22:43:02


7

Diese Arbeit sollte:

override func viewDidLoad() { 
    super.viewDidLoad() 

    var button = UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Bordered, target: self, action: "goBack") 
    self.navigationItem.backBarButtonItem = button 

} 

func goBack() 
{ 
    self.navigationController?.popViewControllerAnimated(true) 
} 
+8

nicht der richtige Weg, es zu tun, die Sie ersetzen nur die Zurück-Taste 29 aug. 152015-08-29 09:14:40

  0

besser es von der Interface Builder zu tun 10 mai. 162016-05-10 12:49:11


0

Das ist, weil Sie es im prepareForSegue Ihrer Eltern Viewcontroller tun sollten:

dieses sollte den Trick machen:

// MARK: - Navigation 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    navigationItem.title = "AnythingYouWant :)" 
} 

Prost

+4

Dies wird eine Menge den Titel auf den View-Controller und nicht nur die Zurück-Taste 29 aug. 152015-08-29 09:21:58


76

Sie tun können, es von der Schnittstelle Builder wie folgt:

klicken Sie auf das Navigationselement der vorherigen Ansicht Controller

enter image description here

aus dem Attributinspektor den Text für die Rückschaltfläche auf den gewünschten Wert setzen. Das ist es !!

enter image description here

+1

Was ist der beste Weg, um 'Nil' zuzuweisen? 05 apr. 162016-04-05 00:13:47

  0

@kennydust Meinst du blank Titel? 05 apr. 162016-04-05 03:10:17

  0

ja. Gibt es einen Weg durch den Interface Builder? 05 apr. 162016-04-05 23:00:05

+5

@kennydust ja in der Zurück-Taste Speicherplatz hinzufügen und drücken Sie die Eingabetaste 06 apr. 162016-04-06 12:11:49

  0

Schön und einfach, aber ist es lokalisierbar? 27 mai. 162016-05-27 19:35:14

  0

@ThePumpingLama, wenn Sie Storyboards lokalisieren, wird es automatisch lokalisiert 28 mai. 162016-05-28 14:51:49

+1

@AjinkyaPatil Ich habe das versucht, aber die Zurück-Schaltfläche wird nicht angezeigt. Irgendein Grund warum das sein könnte? 01 jun. 162016-06-01 22:11:31

  0

@ user805981 ist zurück Schaltfläche Text zeigt? 02 jun. 162016-06-02 06:57:51

  0

@AjinkyaPatil nein ist es nicht 03 jun. 162016-06-03 14:45:04

  0

@ user805981 haben Sie Button-Text auf die gleiche Ansicht Controller oder vorherige Ansicht Controller, von denen Sie Ansicht Controller drücken drücken? 03 jun. 162016-06-03 14:54:19

  0

@AjinkyaPatil Ja, ich habe. Funktioniert immer noch nicht. Hast du ein GitHub-Beispiel? Vielen Dank! 15 jun. 162016-06-15 21:59:51

+3

Dies ist viel sauberer als die angenommene Antwort IMO. 15 nov. 162016-11-15 01:19:31


24

Back-Taste Text wird von übergeordnetem View-Controller des Navigationspunkt Titel genommen. Alles, was Sie im Titel des Navigationselements des vorherigen View-Controllers festgelegt haben, wird auf dem Text des Back-Buttons des aktuellen View-Controllers angezeigt. Sie können einfach "" als Navigationselementtitel in die ViewWillAppear-Methode des übergeordneten View-Controllers einfügen.

self.navigationItem.title = "" 

Ein anderer Weg ist

self.navigationController?.navigationBar.topItem?.title = "" 

in aktueller Ansicht Controller viewWillAppear Methode zu setzen. Dieser verursacht ein anderes Problem, wenn der Navigationsstapel zu verschachtelt ist.

+1

self.navigationItem.title = "" sollte als beste Antwort oben stehen! 07 mai. 162016-05-07 16:45:11

  0

Ich stimme dem als beste Antwort zu, da alle obigen Antworten eine Zielfunktion zum Navigationselement hinzufügen müssen, damit sie nicht nur den Text ändern, sondern auch eine benutzerdefinierte Popfunktion hinzufügen, die von der Frage nicht benötigt wird! 17 jan. 172017-01-17 08:03:05


3

Im viewDidLoad Verfahren der präsentiert Controller add:

// hide navigation bar title in the next controller 
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil) 
navigationItem.backBarButtonItem = backButton 

10

Die Zurück-Taste gehört zum vorherigen Ansicht-Controller, nicht die zur Zeit auf dem Bildschirm dargestellt. die Zurück-Taste So ändern Sie es vor dem Drücken aktualisieren sollen, fügen viewDidLoad:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 

20

Ich weiß nicht, wo Sie Ihre Methoden verwendet haben, die Sie auf Ihrer Frage zu stellen, aber ich konnte das gewünschte Ergebnis erhalten, wenn ich verwende, auf meine ViewController Klasse (in denen möchte ich die zurück-Taste ändern), auf viewDidLoad() Funktion, die folgende Zeile:

self.navigationController?.navigationBar.backItem?.title = "Anything Else" 

Das Ergebnis wird sein:

Vor

enter image description here

Nach

enter image description here

+1

In meinem Fall funktionierte es nur, wenn Sie dieses Stück Code auf die ViewDidAppear-Methode und nicht die ViewDidLoad eine 11 okt. 172017-10-11 13:32:29


0

self.title = "" Stellen vor self.navigationController?.pushViewController(vc, animated: true).


6
let backButton = UIBarButtonItem() 

backButton.title = "name" 

self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton 

1

Try this ... es funktioniert ....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    self.title = "" 
} 

Der obige Code wird der Text und zeigen nur den Zurück-Pfeil auf Navigationsleiste auszublenden.

+1

Dies funktioniert definitiv! +1 09 feb. 182018-02-09 06:05:12


0
override func viewWillAppear(_ animated: Bool) { 

    self.tabBarController?.navigationItem.title = "Notes" 

    let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController)) 

    self.tabBarController?.navigationItem.rightBarButtonItem = sendButton 
} 

func goToNoteEditorViewController(){ 
    // action what you want 
} 

Hoffe es hilft !! #swift 3


12

Wenn Sie XIB-Datei für View-Controller verwenden, dann tun Sie dies in Ihrer View-Controller-Klasse.

class AboutUsViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    edgesForExtendedLayout = [] 
    setUpNavBar() 
} 

func setUpNavBar(){ 
    //For title in navigation bar 
    self.navigationController?.view.backgroundColor = UIColor.white 
    self.navigationController?.view.tintColor = UIColor.orange 
    self.navigationItem.title = "About Us" 

    //For back button in navigation bar 
    let backButton = UIBarButtonItem() 
    backButton.title = "Back" 
    self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton 
} 

} 

Das Ergebnis wird sein:

enter image description here


0

Wenn Sie einen View-Controller ab Seite View-Controller-Seite schieben, können Sie die Navigationssteuerung zurück Schaltfläche Titel nicht aktualisieren. Um dies zu lösen, erstellen Sie einen Delegaten zurück zum übergeordneten Ansichtscontroller (möglicherweise können Sie auch die Hierarchie des Ansichtscontrollers bis zum übergeordneten Element durchlaufen).

Außerdem haben Zurück-Schaltflächen eine Zeichenbeschränkung. Wenn Sie dieses Zeichenlimit überschreiten, wird das System standardmäßig auf "Zurück" gesetzt. Es wird nicht für Sie abgeschnitten. Zum Beispiel:

backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back". 
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is. 

1

können Sie ändern einfach die NavigationItem im Storyboard

enter image description here

In der Zurück-Taste fügen Sie ein Leerzeichen ein und drücken Sie die Eingabetaste.

Hinweis: Tun Sie dies in der vorherigen VC.