1

私は自分のUIViewControllerにタイトルを追加したいと思います:タイトルとは何が違うのですか?

私は、時々ソリューション1つの作品、時々溶液2作品、時々溶液3作品を

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

を試してみました。

エキスパートは、その違いを教えていただけますか?

答えて

3

titleは、UIViewControllerのプロパティです。

このコントローラが管理するビューを表すローカライズされた文字列。 ビューを説明する人間が判読可能な文字列にタイトルを設定します。 ビューコントローラに有効なナビゲーションアイテムまたはタブバーアイテムがある場合、 はこのプロパティに値を割り当てて、 オブジェクトのタイトルテキストを更新します。


self.navigationControllerあなたviewControllerがであるviewControllersのスタックを管理するUINavigationControllerです。UINavigationControllerUIViewControllerのサブクラスなので、self.navigationController.titleUINavigationControllertitleです。


self.navigationItem.title

:ナビゲーション バーの中央に表示

ナビゲーション項目のタイトル。デフォルト値はnilです。受信者がナビゲーション アイテムスタックにあり、上から2番目の場合、つまり、ビュー コントローラは、ユーザーが戻る予定のビューを管理します。このプロパティの の値は、最上部の ナビゲーションバー。このプロパティの値がnilの場合、システムは、 文字列 "戻る"をバックボタンのテキストとして使用します。


ので、実際には、あなたのViewController秒のtitleを設定する必要があります。 iOSのは、あなたのViewControllerUINavigationControllerによって管理されている場合は、別のViewControllerにプッシュするとき、それは、戻るボタンのためにそのテキストを使用するナビゲーションアイテムまたはタブバーの項目にこのタイトルをコピーして、ナビゲーションバーにこのタイトルが表示されますViewControllerUITabBarControllerで管理されている場合はタブバーに表示されます。

1

私はそれらを説明するためのデモを作成します。

あなたが見

enter image description here

、私のvc1は、私のvc2があまりにもnavigation controllerにおける光緑color埋め込みで、navigation controllerに黄灰色color埋め込みですnavigation controllerの2つはすべてtabbar controllerで管理されています。ViewController.swift

(それはvc1である)、Iはself.titleを設定した場合:ViewController2.swift

import UIKit 

class ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.title = "vc1's title" 
    } 

} 

を(それがvc2ある):

import UIKit 

class ViewController2: UIViewController { 

     override func viewDidLoad() { 
     super.viewDidLoad() 

     self.title = "vc2's title" 
    } 

} 

結果はtabbar titlenavigation title全セットである:

enter image description here

私はself.navigationController?.titleを設定した場合:

the result

私はself.navigationItem.titleを設定した場合::

import UIKit 

class ViewController: UIViewController { 

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

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

    } 
} 

結果がtabbar titleが設定されています

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

結果がnavigation titleが設定されている:

enter image description here

+0

あなたがself.navigationController.navigationItem.titleを試してみましたか? – Kevin

+0

私はそれがあなたのデモとして動作することを知っている、私はこれの根本的な原因を知りたい、そして私は私の将来の開発に使用するものを決定することができます。 – Kevin

関連する問題