Wie kann man den Titel einer Navigationsleiste programmgesteuert festlegen?


82

Ich habe eine Navigationsleiste in einer Ansicht und möchte den Titel des Navigationselements programmgesteuert ändern.

Wie wird das gemacht?

Antworten:


201

In Ihrem UIViewController

self.navigationItem.title = @"The title";

Ja, ich würde dies wählen, da nur der Titel des Navigationselements und nicht der Titel des Symbolleistenelements aktualisiert wird.
Prakash Raman

29

Swift 3 Version:

Wenn Sie eine Navigationsleiste ohne Navigationscontroller verwenden, können Sie Folgendes versuchen:

navigationBar.topItem?.title = "Your Title"

Hoffe auf Hilfe.


11

In viewDidLoad

  self.title = @"Title";

3
Meine zwei Cent :) Das funktioniert, obwohl der Vewcontroller Teil eines Toolbarcontrollers ist. Dann wird auch der Titel des Toolbaritems aktualisiert.
Prakash Raman

7

Aus der Apple-Dokumentation :

Die häufigste Art, eine Navigationsleiste zu verwenden, ist die Verwendung eines Navigationscontrollers. Sie können auch eine Navigationsleiste als eigenständiges Objekt in Ihrer App verwenden.

Wenn Sie also einen UINavigationController haben, müssen Sie nur den Titel der Navigationsleiste festlegen (wie in allen vorherigen Antworten erläutert).

self.navigationItem.title = @"title";

Wenn Sie jedoch eine eigenständige Navigationsleiste haben, die programmgesteuert in einem Objekt von UIViewController erstellt wird, müssen Sie das ursprüngliche Erscheinungsbild der Navigationsleiste festlegen, indem Sie die entsprechenden UINavigationItem-Objekte erstellen und sie dem Objektstapel der Navigationsleiste hinzufügen, d. H.

  1. Erstellen Sie eine Instanz der Navigationsleiste (UINavigationBar).
  2. Erstellen Sie eine Instanz des Navigationsleistenelements (UINavigationItem), das die Schaltflächen und Ansichten verwaltet, die in einem UINavigationBar-Objekt angezeigt werden sollen. Beachten Sie, dass Sie den Titel in diesem Schritt festlegen.
  3. (Optionaler Schritt) Fügen Sie dem Navigationsleistenelement rechte / linke Schaltflächen (Instanzen von UIBarButtonItem) hinzu.

Beispiel eines Objective-C-Codes für die genannten Schritte:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

Schauen Sie sich diese Antwort für die Swift-Version der eigenständigen Navigationsleiste an .


6

Schreiben Sie den folgenden Code in viewDidLoadoder möglicherweise besser unterinitWithNibName:

  self.navigationItem.title = @"title";

Vielen Dank.


6

Sie können auch 👇🏻 verwenden

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

2

Dieser Code hat bei mir nicht funktioniert

self.navigationItem.title = @"Title here";

Aber das hat funktioniert.

self.title = "Title Name"

2

In viewDidLoad Ihres UIViewControllers

self.navigationItem.title = "The title";  //In swift 4

oder

du kannst einfach

self.title = "The title"

wird den Trick machen

Sie können die obige Anweisung auch in den App-Delegaten einfügen, um sie global zu replizieren.


0

Verwenden Sie es in der ViewDidLoad-Methode

Format :

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

Beispiel:

self.navigationItem.title = @"Title here";

0

Sehr wichtiger Hinweis: Stellen Sie sicher, dass Sie die oben genannten Änderungen in der viewDidLoad-Methode des übergeordneten View Controllers oder in der Navigationsleiste der übergeordneten Ansicht im Storyboard vornehmen


0

Manchmal kann es vorkommen, dass Sie den Titel aktualisieren und dies keine Auswirkungen hat. Dies kann der Fall sein, wenn Sie eine benutzerdefinierte Ansicht für den Titel haben. topItemDaher möchten Sie ihn möglicherweise folgendermaßen aktualisieren:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.