如何为嵌入在导航控制器中的单个View Controller设置大标题? 通常,我只能为整个导航控制器(包括所有视图控制器)设置大标题,但我只希望显示一个大标题。
$index
答案 0 :(得分:2)
您可以在ViewController出现时在prefersLargeTitles = true
中设置viewWillAppear
,在ViewController消失时在prefersLargeTitles = false
中设置viewWillDisappear
override func viewWillAppear(_ animated: Bool) {
navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewWillDisappear(_ animated: Bool) {
navigationController?.navigationBar.prefersLargeTitles = false
}
答案 1 :(得分:1)
您只能为此viewController
实现逻辑。您可以尝试这样的事情:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.prefersLargeTitles = false
}
答案 2 :(得分:1)
虽然其他两个答案都可以解决问题,但更干净的方法是在所需的UIViewController中执行以下操作:
navigationItem.largeTitleDisplayMode = .always
或
navigationItem.largeTitleDisplayMode = .never
相反的效果。
这消除了跟踪状态的需要,我认为这是一个巨大的进步
有关该主题的更多信息,请参见largeTitleDisplayMode - Apple Developer Documentation
唯一的缺点是它是iOS 11.0 +