【问题标题】:Large title is initially collapsed after push大标题在推后最初是折叠的
【发布时间】:2020-06-28 19:19:11
【问题描述】:

我遇到了一个奇怪的问题:

  • 我有两个视图控制器 - 列表和详细信息。
  • 当我从列表中推送详细信息时,导航栏处于折叠模式。
  • 要使标题显得大,我必须向下滚动。

ListViewController:

...
override func viewDidLoad() {
    super.viewDidLoad()

    setupNavigationBar()
}

private func setupNavigationBar() {
    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.largeTitleDisplayMode = .never
}
...

DetailViewController:

...
override func viewDidLoad() {
    super.viewDidLoad()

    setupNavigationBar()
}

private func setupNavigationBar() {
    title = "Bangkok ⇄ Phuket"
    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.largeTitleDisplayMode = .always
}
...

经过一番调查,我发现只有在标题中放入某些字符时才会出现该错误:

  • 当标题为“曼谷 → 普吉岛”时,一切正常
  • 标题为“曼谷 ⇄ 普吉岛”时,推送的控制器标题折叠

你们知道标题中字符的限制是什么,或者有什么解决办法吗?谢谢,非常感谢您的帮助

【问题讨论】:

    标签: ios swift ios13 navigationcontroller


    【解决方案1】:

    在您的 DetailViewController 中尝试将您的导航栏自定义设置到您的 viewWillAppear 方法中:

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

    【讨论】:

      【解决方案2】:

      使用 navigationController?.navigationItem.largeTitleDisplayMode = .always 而不是 navigationItem.largeTitleDisplayMode = .always 为我解决了这个问题。

      navigationController?.navigationBar.prefersLargeTitles = true
      navigationController?.navigationItem.largeTitleDisplayMode = .always
      

      这个问题说明viewController的navigationController.navigationItem和self.navigationItem有区别。请注意使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        • 2011-04-02
        • 2018-03-04
        • 1970-01-01
        相关资源
        最近更新 更多