代码之家  ›  专栏  ›  技术社区  ›  Kevin

标题有什么不同?

  •  1
  • Kevin  · 技术社区  · 8 年前

    我想为我的UIViewController添加标题:

    我试过了

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

    有时,解决方案1可行,有时解决方案2可行,有时方案3可行。

    有专家能告诉我他们之间的区别吗?

    2 回复  |  直到 8 年前
        1
  •  5
  •   vacawama    8 年前

    title UIViewController .

    表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的可读字符串。如果 视图控制器具有有效的导航项或标签栏项, 为此属性指定值将更新这些属性中的标题文本 物体。


    self.navigationController UINavigationController 管理视图控制器堆栈的 viewController 在。 UINavigationController UIViewController 所以 self.navigationController.title 标题 UINavigationController .


    self.navigationItem.title :

    显示在导航中心的导航项标题 酒吧默认值为nil。当接收机处于导航状态时 项目堆栈,从顶部起第二个换句话说,它的视图 控制器管理用户将导航回的视图 此属性中的值用于最顶部的“后退”按钮 导航栏。如果此属性的值为零,则系统使用 返回字符串作为返回按钮的文本。


    因此,在实践中,您应该设置 标题 你的 ViewController s、 iOS将此标题复制到导航项或选项卡栏项,并在 导航栏 如果 视图控制器 UINavigationController 当你推到另一个 视图控制器 ,如果您的 视图控制器 UITabBarController .

        2
  •  3
  •   aircraft    8 年前

    我创建了一个演示来解释它们

    enter image description here

    你看,我的 vc1 是黄色还是灰色 color 嵌入 navigation controller 我的 vc2 是浅绿色的吗 颜色 嵌入 导航控制器 两个 导航控制器 都是由一个 tabbar controller .

    在里面 ViewController.swift (是的 vc1 )或者,如果我设置 self.title :

    import UIKit
    
    class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.title = "vc1's title"  
        }
    
    }
    

    在里面 ViewController2.swift (是的 vc2 ):

    import UIKit
    
    class ViewController2: UIViewController {
    
           override func viewDidLoad() {
            super.viewDidLoad()
    
            self.title = "vc2's title"
        }
    
    }
    

    结果是 tabbar title navigation title 准备就绪:

    enter image description here

    如果我设置 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"
    
        }
    }
    

    选项卡标题 设置为:

    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"
    
            self.navigationItem.title = "vc1's navItem title"
        }
    }
    

    结果是 导航标题 设置为:

    enter image description here