2015-02-12 9 views
118

Wie entfernen Sie den Text zurück Text.Zurücksetzen der Schaltfläche Text in Swift

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 

Antwort

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) – Ricardo

+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) –

+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! – vhristoskov

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 – Yariv

+0

besser es von der Interface Builder zu tun –

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 – Yariv

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? – kennydust

+0

@kennydust Meinst du blank Titel? –

+0

ja. Gibt es einen Weg durch den Interface Builder? – kennydust

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! – rilar

+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! – IsPha

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 – apinho

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 –

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.

Verwandte Themen