Ios 什么';标题有什么不同?
我想为我的UIViewController添加标题: 我试过了Ios 什么';标题有什么不同?,ios,swift,uinavigationcontroller,uinavigationbar,uinavigationitem,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Uinavigationitem,我想为我的UIViewController添加标题: 我试过了 self.navigationController.navigationItem.title self.navigationController.title self.title 有时,解决方案1可行,有时解决方案2可行,有时解决方案3可行 任何专家都能告诉我它们之间的区别吗?title是UIViewController的一个属性 表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的可读字符串。如果 视图控制器具有有效的
self.navigationController.navigationItem.title
self.navigationController.title
self.title
有时,解决方案1可行,有时解决方案2可行,有时解决方案3可行
任何专家都能告诉我它们之间的区别吗?
title
是UIViewController
的一个属性
表示此控制器管理的视图的本地化字符串。
将标题设置为描述视图的可读字符串。如果
视图控制器具有有效的导航项或选项卡栏项,
为该属性指定值将更新这些属性中的标题文本
对象
self.navigationController
是一个UINavigationController
,它管理viewController
所在的viewController堆栈UINavigationController
是UIViewController
的子类,因此self.navigationController.title
是UINavigationController
的title
self.navigationItem.title
:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
导航项目的标题显示在导航的中心
酒吧。默认值为零。当接收器处于导航位置时
项目堆栈,从顶部算起第二个,换句话说,是它的视图
控制器管理用户将导航回的视图
此属性中的值用于最顶部的“后退”按钮
导航栏。如果此属性的值为零,则系统使用
字符串“后退”作为后退按钮的文本
因此,实际上,您应该设置
ViewController
s的title
。如果您的ViewController
由UINavigationController
管理,iOS会将此标题复制到导航项或选项卡栏项,并在导航栏上显示此标题。当您按下另一个ViewController
时,iOS会将该文本用作后退按钮,如果您的ViewController
由uitabarcontroller
title
是UIViewController
的属性,则它将显示在选项卡栏中
表示此控制器管理的视图的本地化字符串。
将标题设置为描述视图的可读字符串。如果
视图控制器具有有效的导航项或选项卡栏项,
为该属性指定值将更新这些属性中的标题文本
对象
self.navigationController
是一个UINavigationController
,它管理viewController
所在的viewController堆栈UINavigationController
是UIViewController
的子类,因此self.navigationController.title
是UINavigationController
的title
self.navigationItem.title
:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
导航项目的标题显示在导航的中心
酒吧。默认值为零。当接收器处于导航位置时
项目堆栈,从顶部算起第二个,换句话说,是它的视图
控制器管理用户将导航回的视图
此属性中的值用于最顶部的“后退”按钮
导航栏。如果此属性的值为零,则系统使用
字符串“后退”作为后退按钮的文本
因此,实际上,您应该设置
ViewController
s的title
。如果您的ViewController
由UINavigationController
管理,iOS会将此标题复制到导航项或选项卡栏项,并在导航栏上显示此标题。当您按下另一个ViewController
时,iOS会将该文本用作后退按钮,如果您的ViewController
由UITabBarController
管理,它将显示在选项卡栏中。我创建了一个演示来解释它们:
你看,我的vc1
是黄灰色颜色
嵌入导航控制器
,我的vc2
是浅绿色颜色
也嵌入导航控制器
,两个导航控制器
都由选项卡栏控制器
管理
在ViewController.swift
(它是vc1
),如果我设置self.title
:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
在ViewController2.swift
(它是vc2
):
结果是选项卡栏标题
和导航标题
全部设置:
如果我设置了self.navigationController?.title:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
结果是设置了选项卡栏标题
:
如果我设置了self.navigationItem.title:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
结果是设置了导航标题
:
我创建了一个演示来解释它们: 你看,我的
vc1
是黄灰色颜色
嵌入导航控制器
,我的vc2
是浅绿色颜色
也嵌入导航控制器
,两个导航控制器
都由选项卡栏控制器
管理
在ViewController.swift
(它是vc1
),如果我设置self.title
:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
在ViewController2.swift
(它是vc2
):
结果是选项卡栏标题
和导航标题
全部设置:
如果我设置了self.navigationController?.title:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
结果是设置了选项卡栏标题
:
如果我设置了self.navigationItem.title:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "vc1's title"
}
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// self.title = "vc1's title"
self.navigationController?.title = "vc1's nav 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"
}
}
结果是设置了导航标题
:
你试过self.navigationController.navigationItem.title吗?我知道它可以作为你的演示,我想知道它的根本原因,然后我可以决定在我未来的开发中使用哪一个。你试过self.navigationController.navigationItem.title吗?我知道它可以作为你的演示,我想知道它的根本原因