我有一个pushed
到导航堆栈上的视图控制器。堆栈具有navigationBar.prefersLargeTitles = true
,而此新视图控制器具有navigationBar.prefersLargeTitles = false
。我使用以下视图控制器中的代码将其压入堆栈:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = true
}
但是,当我返回到呈现视图控制器时,导航栏中从navigationBar.prefersLargeTitles = false
到navigationBar.prefersLargeTitles = true
的更改有些小毛病。有什么方法可以使它更平滑?
非常感谢
答案 0 :(得分:4)
您应该通过想要影响的特定视图控制器的导航项来更改行为,而不是通过导航控制器直接更改首选项。
class ViewControllerA: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .always
}
}
class ViewControllerB: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .never
}
}
您可以删除viewWillAppear
和viewWillDisappear
中的行。