1

Ich möchte Titel meiner UIViewController hinzuzufügen:Was ist mit Titeln anders?

I

self.navigationController.navigationItem.title 
self.navigationController.title 
self.title 

Manchmal Lösung 1 Arbeit versucht haben, manchmal Lösung 2 Arbeit, manchmal Lösung 3 funktioniert.

Kann mir irgendein Experte die Unterschiede zwischen ihnen sagen?

Antwort

3

title ist eine Eigenschaft von UIViewController.

Eine lokalisierte Zeichenfolge, die die Ansicht darstellt, die dieser Controller verwaltet. Legen Sie den Titel auf eine lesbare Zeichenfolge fest, die die Ansicht beschreibt. Wenn der View-Controller über ein gültiges Navigationselement oder einen Tab-Bar-Eintrag verfügt, aktualisiert , wenn dieser Eigenschaft ein Wert zugewiesen wird, den Titeltext in diesen -Objekten.


self.navigationController ist ein UINavigationController, die den Stapel von Viewcontrollers verwaltet, die Ihre viewController in ist. UINavigationController eine Unterklasse von UIViewController ist, so ist self.navigationController.title die title des UINavigationController.


self.navigationItem.title:

Der Titel in der Mitte der Navigationsleiste angezeigt Navigationspunkt. Der Standardwert ist Null. Wenn sich der Empfänger im Elementstapel befindet und an zweiter Stelle von oben ist - mit anderen Worten, seine Ansicht Controller verwaltet die Ansichten, zu denen der Benutzer zurück navigieren würde - der Wert in dieser Eigenschaft wird für die Zurück-Schaltfläche auf der Registerkarte verwendet oberste Navigationsleiste. Wenn der Wert dieser Eigenschaft null ist, verwendet das System die Zeichenfolge "Zurück" als Text der Zurück-Schaltfläche.


So in der Praxis sollten Sie die title Ihrer ViewController s eingestellt. iOS Diesen Titel auf den Navigationspunkt oder Tab-Leiste Element kopieren und zu diesem Titel wird auf der Navigationsleiste wenn Ihre ViewController von einem UINavigationController verwaltet wird, wird es, dass der Text für das Button Zurück verwenden, wenn Sie in einer anderen ViewController schieben, und es wird in der Tableiste angezeigt, wenn Ihre ViewController von einem UITabBarController verwaltet wird.

1

erstelle ich eine Demo, sie zu erklären:

enter image description here

Sie sehen, meine vc1 ist gelb-grau color einbetten in einem navigation controller, mein vc2 ist hellgrün color einbetten in einem navigation controller auch die zwei navigation controller wird alles von einem tabbar controller verwaltet.

In ViewController.swift (es ist vc1), wenn ich self.title gesetzt:

import UIKit 

class ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.title = "vc1's title" 
    } 

} 

In ViewController2.swift (es ist vc2):

import UIKit 

class ViewController2: UIViewController { 

     override func viewDidLoad() { 
     super.viewDidLoad() 

     self.title = "vc2's title" 
    } 

} 

Das Ergebnis der tabbar title und navigation title alle Set:

enter image description here

Wenn ich gesetzt self.navigationController?.title:

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // self.title = "vc1's title" 

     self.navigationController?.title = "vc1's nav title" 

    } 
} 

Das Ergebnis wird tabbar title gesetzt:

the result

Wenn ich self.navigationItem.title gesetzt:

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // self.title = "vc1's title" 

     //self.navigationController?.title = "vc1's nav title" 

     self.navigationItem.title = "vc1's navItem title" 
    } 
} 

Das Ergebnis wird navigation title gesetzt:

enter image description here

+0

Haben Sie self.navigationController.navigationItem.title versuchen? – Kevin

+0

Ich weiß, es funktioniert als dein Demo, ich möchte die Ursache dafür wissen, dann kann ich entscheiden, welches ich in meiner zukünftigen Entwicklung verwenden soll. – Kevin

Verwandte Themen