设置 navigationItem 标题延迟问题

Posted

技术标签:

【中文标题】设置 navigationItem 标题延迟问题【英文标题】:Setting navigationItem title delay issues 【发布时间】:2017-09-19 10:10:47 【问题描述】:

当将控制器推送到导航堆栈时,我执行:

self.navigationItem.title = "";

因为我不希望下一个视图在后退按钮上显示前一个控制器的名称。

当我回到那个控制器时,我会这样做:

override func viewWillAppear(_ animated: Bool) 
    self.navigationItem.title = "Title Of View";
    ...

标题设置得当,但滞后约 1 秒左右。我记得过去使用这种技术很长一段时间没有出现问题。设置标题的代码不在网络调用或类似的东西中..

关于可能导致此问题的任何想法?

【问题讨论】:

【参考方案1】:

为了隐藏后退按钮标题,您应该将空的 UIBarButtonItem 实例设置为 self.navigationItem.backBarButtonItem 在你推送新的视图控制器之后,就像这样:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .done, target: nil, action: nil)

这样您就不必操作视图控制器的标题。

【讨论】:

这有点奇怪。假设控制器 A 和控制器 B。为控制器 B 添加代码什么也不做。为控制器 A 添加代码,然后推送控制器 B 就可以了。这让我很困惑,为什么我需要更改前一个控制器和当前控制器上的 UIBarButtonItem? 事情是这样的,控制器A的backBarButtonItem显示在控制器B上。你不应该想到backBarButtonItem显示在它的navigationItem的控制器上,想它带你到那个控制器。 我明白了,令人惊讶的是,这是有道理的。对不起,我对它的理解有限,谢谢:D

以上是关于设置 navigationItem 标题延迟问题的主要内容,如果未能解决你的问题,请参考以下文章

self.navigationItem.backBarButtonItem 无法设置

如何设置navigationItem.titleView 图片水平居中?

如何设置navigationItem titleView的按钮?

当 navigationItem.title 太长时后退按钮标题消失

navigationController.navigationItem 与 navigationItem

navigationItem的设置和titleView的设置