首页 > 解决方案 > 如何让导航栏在转回时显示大标题?

问题描述

我有一个选项卡栏应用程序,其中一个视图是 UITableViewController,其中包含静态单元格作为 1 节和 1 行的内容。

聊天视图

我希望将大标题设置为“始终”,因此我在情节提要上进行了选择,并且在模拟器上标题很大。现在,当用户点击“开始聊天”时,应用程序将转到虚拟助手视图控制器,其中大标题在情节提要上设置为“从不”。现在的问题是,当用户使用“开始聊天”表格视图单元格回到前一个视图控制器时,标题不再大了。

有趣的是,当我将表格视图设置为可滚动时,在向下拖动表格视图时标题再次变大。我确保使用“首选大标题”检查了导航控制器故事板上的导航栏。我正在使用 Xcode 11,使用 Xcode 10 时这不是问题。

我尝试使用开始聊天按钮为视图创建一个自定义类,但此代码无法使标题从 segue 变大:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationItem.largeTitleDisplayMode = .always
    navigationController?.navigationBar.prefersLargeTitles = true

我还能做什么?任何帮助将不胜感激!

标签: swiftuinavigationbarxcode11preferslargetitles

解决方案


我会willMove(toParent:)在执行 segue 之前将标题改回。

override func willMove(toParent parent: UIViewController?) {
    navigationController?.navigationItem.largeTitleDisplayMode = .always
    navigationController?.navigationBar.prefersLargeTitles = true
}

推荐阅读