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?

Doug Null
quelle

Antworten:

201

In Ihrem UIViewController

self.navigationItem.title = @"The title";
Arclight
quelle
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.

Hieronymus
quelle
11

In viewDidLoad

  self.title = @"Title";
Madhu
quelle
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 .

Wael Showair
quelle
6

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

  self.navigationItem.title = @"title";

Vielen Dank.

Nikhil Bansal
quelle
6

Sie können auch 👇🏻 verwenden

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Surjeet Rajput
quelle
2

Dieser Code hat bei mir nicht funktioniert

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

Aber das hat funktioniert.

self.title = "Title Name"
Prasad A.
quelle
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.

NickCoder
quelle
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";
Jayprakash Dubey
quelle
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

Smoothumut
quelle
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"

Hola Soja Edu Feliz Navidad
quelle