标题有什么不同?

Kev*_*vin 1 uinavigationbar uinavigationcontroller uinavigationitem ios swift

我想为我的 UIViewController 添加标题:

我试过了

self.navigationController.navigationItem.title
self.navigationController.title
self.title
Run Code Online (Sandbox Code Playgroud)

有时,解决方案 1 有效,有时解决方案 2 有效,有时解决方案 3 有效。

哪位专家能告诉我它们之间的区别吗?

vac*_*ama 5

title是 的属性UIViewController

表示此控制器管理的视图的本地化字符串。将标题设置为描述视图的人类可读字符串。如果视图控制器具有有效的导航项或选项卡栏项,则为该属性赋值会更新这些对象中的标题文本。


self.navigationControllerUINavigationController管理viewControllers的堆栈,你viewController在不在。 UINavigationController是的子类UIViewController,所以self.navigationController.titletitleUINavigationController


self.navigationItem.title

导航项的标题显示在导航栏的中心。默认值为 nil。当接收器位于导航项堆栈上并且从顶部开始第二个时——换句话说,它的视图控制器管理用户将导航回的视图——此属性中的值用于最顶部的后退按钮导航栏。如果此属性的值为 nil,则系统使用字符串“Back”作为后退按钮的文本。


因此,在实践中,你应该将title你的ViewController秒。iOS版将这个标题复制到导航项目或标签栏项目,并显示在此标题导航栏,如果你ViewController是一个管理UINavigationController,它将使用文本的后退按钮,当你推到另一个ViewController,它会在显示它标签栏,如果您ViewController是由UITabBarController.