设置 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 太长时后退按钮标题消失