it-swarm.com.de

So setzen Sie den Schaltflächentext in Swift zurück

Wie entfernen Sie den Text der Rücktaste?.

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

Keiner von diesen hat funktioniert:

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
153
Onichan

Die Zurück-Schaltfläche gehört zum View Controller previous, nicht zu dem aktuell angezeigten Bildschirm.
Um die Zurück-Schaltfläche zu ändern, müssen Sie sie vorher drücken, und zwar auf dem View-Controller, der das Segment initiiert hat:

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
}
507
Yariv

Sie können dies vom Interface Builder aus wie folgt tun:

klicken Sie auf das Navigationselement des vorherigen View-Controllers

 enter image description here

stellen Sie im Attribut-Inspektor den Text für die Schaltfläche "Zurück" auf den gewünschten Wert ein. Das ist es!!

 enter image description here

104
Ajinkya Patil

Der Back-Button-Text wird aus dem Navigationselement-Titel des übergeordneten View-Controllers übernommen. Was auch immer Sie für den Titel des Navigationselements des vorherigen View-Controllers festgelegt haben, wird im Text der Schaltfläche 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 zu setzen 

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

in der viewWillAppear-Methode des aktuellen Ansichtscontrollers. Dies führt zu einem anderen Problem, wenn der Navigationsstapel zu verschachtelt ist.

34
minhazur

Wenn Sie die xib-Datei für den View-Controller verwenden, 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

26
mustaq

Ich weiß nicht, wo Sie Ihre Methoden verwendet haben, die Sie auf Ihre Frage gestellt haben, aber ich könnte das gewünschte Ergebnis erzielen, wenn ich in meiner ViewController-Klasse (in der ich die Zurück-Schaltfläche ändern möchte) in der viewDidLoad()-Funktion die folgende Zeile verwendet :

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

Das Ergebnis wird sein:

Vor

 enter image description here

Nach dem

 enter image description here

26

Sie können diese 3 Codezeile in Ihre override func viewDidLoad() {} einfügen.

let backButton = UIBarButtonItem()

backButton.title = "name"

self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton
23
Hitesh Chauhan

Die Zurück-Schaltfläche gehört zum vorherigen View-Controller, nicht zu dem aktuell auf dem Bildschirm angezeigten. Um die Zurück-Schaltfläche zu ändern, sollten Sie sie vor dem Drücken aktualisieren, indem Sie viewdidload hinzufügen:

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

Sie können das Navigationselement einfach im Storyboard ändern

 enter image description here

Fügen Sie in der Zurück-Schaltfläche ein Leerzeichen ein und drücken Sie die Eingabetaste.

Hinweis: Führen Sie dies im vorherigen VC durch.

9
xhinoda

Das sollte funktionieren:

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)
}

Dies wird zwar nicht empfohlen, da dies tatsächlich den backButton ersetzt und außerdem den hinteren Pfeil und die Wischgeste entfernt.

8
Dejan Skledar

Swift 4 - Konfigurieren Sie die Zurück-Taste, bevor Sie einen View-Controller drücken

// if you want to remove the text
navigationItem.backBarButtonItem = UIBarButtonItem()

// if you want to modify the text to "back"
navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
6
budidino

In der viewDidLoad Methode des Presenting Controller add:

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

Schnelle 4.2 Verwendung;

Wenn Sie den Navigationstext für die Navigationsleiste ändern möchten, fügen Sie den Elementtext der Schaltfläche hinzu.

 let backButton = UIBarButtonItem()
 backButton.title = "New Back Button Text"
 self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

Wenn Sie den Titeltext der Navigationsleiste hinzufügen möchten;

 self.title = "Navigation Bar Title"

Self -> ViewController

3
ikbal

diese Antworten beheben zwar das Problem, dies könnte jedoch nützlich sein 

class MainNavigatioController: UINavigationController {

    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        // first
        let backItem = UIBarButtonItem()
        backItem.title = "رجوع"
        self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
        // then
        super.pushViewController(viewController, animated: animated)

    }

}
1
Ahmad Labeeb

Swift 4

Während das vorige Sprichwort "Vorbereitung" für "segue" korrekt ist und der "true" -Zeichen-Button "Zurück" zum vorherigen VC gehört, ist es nur ein paar unnötige Codes.

Am besten setzen Sie den Titel des aktuellen VC in viewDidLoad. Der Titel der Schaltfläche "Zurück" wird beim nächsten VC automatisch korrekt festgelegt. Diese Linie hat für mich funktioniert

navigationController?.navigationBar.topItem?.title = "Title"
1
Joel

Probieren Sie es aus ... es wird funktionieren ....

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

Der obige Code blendet den Text aus und zeigt nur den Rückwärtspfeil in der Navigationsleiste.

1
Sarabjit Singh
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
}

Ich hoffe es hilft!! #Swift 3

0
Gurunathan

Wenn Sie einen View-Controller von der Seite-View-Controller-Seite aus verschieben, können Sie den Titel der hinteren Schaltfläche des Navigationscontrollers nicht aktualisieren. Um dies zu beheben, erstellen Sie einen Delegaten zurück zu Ihrem übergeordneten View-Controller (möglicherweise können Sie auch die View-Controller-Hierarchie bis zum übergeordneten Element durchlaufen). 

Außerdem haben die Zurück-Schaltflächen eine Zeichenbegrenzung. Wenn Sie dieses Zeichenlimit überschreiten, wird standardmäßig "Zurück" angezeigt. Es wird für Sie nicht abgeschnitten. Zum Beispiel:

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

Swift 4

In meinem Fall bestand die Lösung darin, das Navigationselement des Master View Controllers zu löschen, bevor Sie zum Child View Controller wechseln. Stellen Sie es erneut ein, wenn es erneut angezeigt wird

MasterController

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationItem.title = "Master Title"
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationItem.title = ""
}

Und so schiebe ich einen UIViewController und lösche den Button der hinteren Leiste im untergeordneten Controller:

MasterController

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)
0
Jorge Casariego

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

0
米米米

für Swift 4.2

let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
0
Iryna Batvina