头衔有啥不同?
Posted
技术标签:
【中文标题】头衔有啥不同?【英文标题】:What's the different with titles?头衔有什么不同? 【发布时间】:2016-12-18 12:39:02 【问题描述】:我想给我的 UIViewController 添加标题:
我试过了
self.navigationController.navigationItem.title
self.navigationController.title
self.title
有时,解决方案 1 有效,有时解决方案 2 有效,有时解决方案 3 有效。
哪位专家能告诉我它们之间的区别吗?
【问题讨论】:
【参考方案1】:title
是 UIViewController
的属性。
表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的人类可读字符串。如果 视图控制器有一个有效的导航项或标签栏项, 给这个属性赋值会更新那些标题文本 对象。
self.navigationController
是一个UINavigationController
,它管理您的viewController
所在的viewController 堆栈。UINavigationController
是UIViewController
的子类,所以self.navigationController.title
是UINavigationController
的title
.
self.navigationItem.title
:
导航项的标题显示在导航的中心 酒吧。默认值为无。当接收机在导航时 项目堆栈并且是从顶部开始的第二个 - 换句话说,它的视图 控制器管理用户将导航回的视图—— 此属性中的值用于最顶部的后退按钮 导航栏。如果此属性的值为 nil,则系统使用 字符串“Back”作为后退按钮的文本。
因此,在实践中,您应该设置ViewController
s 的title
。如果您的ViewController
由UINavigationController
管理,ios 会将此标题复制到导航项或标签栏项并在导航栏 上显示此标题,它会将该文本用于返回按钮当您推送到另一个ViewController
时,如果您的ViewController
由UITabBarController
管理,它将显示在标签栏中。
【讨论】:
【参考方案2】:我创建了一个演示来解释它们:
你看,我的vc1
是黄灰色的color
嵌入navigation controller
,我的vc2
是浅绿色color
也嵌入了navigation controller
,两个navigation controller
就是全部由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
全部设置:
如果我设置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"
结果是tabbar title
被设置:
如果我设置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"
结果是navigation title
被设置:
【讨论】:
你试过self.navigationController.navigationItem.title了吗? 我知道它可以作为你的演示,我想知道它的根本原因,然后我可以决定在我未来的开发中使用哪一个。以上是关于头衔有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章
QRemoteObjectRegistryHost 和 QRemoteObjectHost 有啥不同?