1

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

聊天视图

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

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

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

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

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

4

2 回答 2

4

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

override func willMove(toParent parent: UIViewController?) {
    navigationController?.navigationItem.largeTitleDisplayMode = .always
    navigationController?.navigationBar.prefersLargeTitles = true
}
于 2019-09-23T17:10:08.307 回答
0

在设置 时设置属性UINavigationController,然后再呈现它。如果您已经展示了导航控制器,请尝试执行此操作以强制更新导航栏:

navigationController?.navigationItem.prompt = ""

navigationController?.navigationItem.prompt = nil

我从这个问题中得到了这个解决方法。

在您的特定情况下,最好将导航控制器子类化并在其viewDidLoad方法中设置这些属性,因此它的属性(largeTitleDisplayModeprefersLargeTitles)设置在一个独立的代码中。

于 2019-09-23T17:09:16.610 回答