wake-up-neo.com

Wie ändere ich den Namen der Schaltfläche "Zurück" von UINavigationController?

Ich habe ein UIViewController und navigiere von meinem ersten View-Controller zum zweiten View-Controller. Ich möchte den Namen der auf dem navigationcontroller angezeigten Schaltfläche ändern, um zurückzukehren.

SecondViewController *secondController = [[SecondViewController alloc]
                                              initWithNibName:nil
                                              bundle:NULL]; 
[self.navigationController pushViewController:secondController  animated:YES];

jetzt im zweiten viewcontroller möchte ich den Namen der Schaltfläche im navigationController ändern.

57
Bulla

In viewWillAppear schreibe dies

self.navigationItem.title = @"List View";

Und in ViewWilldisapper schreiben Sie dies

self.navigationItem.title = @"Back";

Es funktioniert ohne Storyboards.

34
Tendulkar

Wenn Sie dies programmgesteuert tun möchten, können Sie dies folgendermaßen tun:

Ziel c

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:nil
                                                            action:nil];

[self.navigationItem setBackBarButtonItem:backItem];

Swift

let backItem = UIBarButtonItem(title: "Custom", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem

Wenn Sie jedoch den Interface Builder bevorzugen, wählen Sie einfach das UINavigationItem aus, für das Sie die Schaltfläche "Zurück" festlegen möchten, und navigieren Sie zum Attributinspektor, um den Titel der Schaltfläche "Zurück" zu ändern.

enter image description here

HINWEIS: Beachten Sie, dass Sie dies auf dem View-Controller konfigurieren müssen, zu dem Sie beim Tippen auf die Schaltfläche "Zurück" zurückkehren würden, nicht auf dem aktuell sichtbaren View-Controller.

182
Mick MacCallum

Es gibt eine einfache Möglichkeit, dies in Interface Builder oder Storyboarding zu tun. Setzen Sie im übergeordneten View Controller das Attribut "Zurück-Schaltfläche" des Navigationselements auf den gewünschten Titel. Hier ist ein Beispiel:

Set Back Button Title of child view controller form parent view controller

Villians Tavern-Ansicht hat "Zurück" als Titel für die Schaltfläche "Zurück", wie wir es gerade im Attributinspektor des Navigationscontrollers der Eltern (Beste Leisten) festgelegt haben.

42
Roger

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
}

Hinweis: Die Schaltfläche Zurück gehört zum vorherigen Ansichts-Controller und nicht zum aktuell auf dem Bildschirm angezeigten. Um die Zurück-Schaltfläche zu ändern, müssen Sie sie vor dem Drücken auf dem View-Controller, der den Übergang initiiert hat, aktualisieren:

4
Anil

In meinem Fall hat es nur geklappt, den Code im Haupt-Thread auszuführen:

dispatch_async(dispatch_get_main_queue(), ^(void) {

    self.navigationController.navigationBar.backItem.title = @"Custom Title";
});
4
Winston

In Swift fand ich die Lösung sehr einfach,

Angenommen, ich bin auf ViewControllerA und gehe zu ViewControllerB. Wenn ich den Namen der Zurück-Schaltfläche ändern möchte, die auf ViewControllerB angezeigt wird, mache ich das in ViewControllerA,

self.title = "BackButtonTitle"

Das ist es.

Hinweis: - Dies ändert den Titel von ViewControllerA

2
Zaid Pathan

Es ist sehr wichtig, dass in der Ansichtssteuerung die Option "Simulierte Metriken" nicht als "Abgeleitet" ausgewählt ist.

Ich habe es mit "None" versucht und alles ist in Ordnung!

1
javifernandezr

Sie können dies erreichen, indem Sie titleView von navigationItem verwenden.

Schnelle 3 Antwort

• Erstellen Sie eine Erweiterung für UINavigationItem (siehe unten)

extension UINavigationItem {
    func customTitle(title: String) {
        let titleLabel = UILabel()
        titleLabel.text = title
        titleLabel.textColor = UIColor.white
        titleLabel.textAlignment = .center
        titleLabel.sizeToFit()
        titleView = titleLabel
    }
}

• Führen Sie in Ihren Controllern viewDidLoad die folgenden Schritte aus

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        title = "Text For Back Button"
        navigationItem.customTitle(title: "Title for your view controller")
}
1
Leojin

Versuchen Sie es wie folgt: -

NSArray *viewControllerArr = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousViewControllerIndex = [viewControllerArr indexOfObject:self] - 1;
UIViewController *previous;
if (previousViewControllerIndex >= 0) {
    previous = [viewControllerArr objectAtIndex:previousViewControllerIndex];
    previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
                                                 initWithTitle:@"Back"
                                                 style:UIBarButtonItemStylePlain
                                                 target:self
                                                 action:nil];
}
1
Hussain Shabbir

Wenn Sie Storyboard-Referenzen verwenden, zeigt der View Controller möglicherweise das Navigationselement im Interface Builder nicht an.

Das manuelle Ziehen einer Navigationsleiste funktioniert nicht. Sie müssen ein Navigationselement ziehen

Anschließend können Sie den Titel des Zurück-Buttons festlegen. Hier legen Sie auch den Titel der Ansicht fest.

Zitat von Mick MacCallum:

HINWEIS: Beachten Sie, dass Sie dies auf dem View-Controller konfigurieren müssen, zu dem Sie beim Tippen auf die Schaltfläche "Zurück" zurückkehren würden, nicht auf dem aktuell sichtbaren View-Controller.

1
Lucas

Versuchen Sie den folgenden Code:

[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];
1
CharmingQin

Tatsächlich können Sie den Titel der Zurück-Schaltfläche ändern:

self.navigationItem.backBarButtonItem.title = @"NewName";
1

Hierfür gibt es zwei Möglichkeiten.

Der erste Weg ist per Programmcode:

Yakimenko Alekseys Antwort ist der einfachste Weg. Das funktioniert wirklich (getestet auf Xcode 8 + iOS 10).

Swift3:

self.navigationItem.backBarButtonItem?.title = "Your customized back title"

Hinweis: Sie sollten den obigen Code im Quellansichts-Controller aufrufen, nicht im Zielansichts-Controller.

Die zweite Möglichkeit ist die Verwendung der Storyboard-Lokalisierung über Main.strings Datei,

"nnnnnnn.title" = "localized string";

Nnnnnnn bedeutet die Objekt-ID des BackBarButtonItem im View-Controller Quelle (nicht im Destination-View-Controller!)

Sie müssen die "Zurück" -Eigenschaft des Navigationsleistenelements festlegen. Es erstellt automatisch ein BarButtonItem. Sie finden die Objekt-ID.

Leider konnte ich keine Screenshots hochladen.

0
osexp2003

Wenn Sie Storyboard verwenden, gibt es eine einfache Möglichkeit, dies zu tun (es hat für mich gut funktioniert).

  • Gehe zu deinem Storyboard
  • Wählen Sie aus, welchen UIViewController Sie den Text der Zurück-Schaltfläche ändern möchten.
  • Klicken Sie oben in Ihrem UIViewController auf das UINavigationItem. (der mit dem Titel)
  • Wählen Sie im rechten Bereich den Attributinspektor aus (das vierte Symbol).
  • Jetzt können Sie die Texte für Titel, Eingabeaufforderung und Zurück-Schaltfläche festlegen.

enter image description here

Quelle: http://pinkstone.co.uk/Wie-zu-ändern-der-Backbutton-Text-auf-einem-Navigationscontroller-inIhrem-Storyboard/

0
Luis

Ich bin auf ViewController1 und gehe zu ViewController2. Wenn ich den Namen der auf ViewController2 angezeigten Zurück-Schaltfläche ändern möchte, mache ich dies in ViewController2.

Swift 5

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

Ziel-C

self.navigationController.navigationBar.topItem.title = @"BackButtonTitle";
0
said altintop

Ich hatte ein ziemlich komplexes Storyboard mit vielen Navigationssteuerungen, und mein Kunde wollte, dass alle Zurück-Schaltflächen "Zurück" sagten.

Im Interface Builder habe ich "Zurück" in das Feld "Zurück" jedes UINavigationItems eingefügt.

Ich habe nicht bei jedem Szenenwechsel gearbeitet!

Das Problem war, dass nicht jeder View Controller im Storyboard ein UINavigationItem hatte.

Ich habe dies behoben, indem ich ein neues UINavigationItem auf jeden UIViewController gezogen habe, der kein UINavigationItem hatte, und all der Felder der Schaltfläche Zurück auf "Zurück" gesetzt habe.

Achten Sie auf die Controller, denen nicht automatisch ein eigenes UINavigationItem zugewiesen wird.

0
DrSmart

Schnell 4

Stellen Sie in Ihrem IViewController Folgendes ein:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton
0
Ben-hur Ott