You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导航控制器自定义titleView仅根控制器生效 需替换topItem吗

问题原因

你使用的navigationController?.navigationBar.topItem指向的是导航栈最底部的根视图控制器对应的导航项,所以只有根控制器配置时生效。当你push新的ViewController实例时,新实例自身的导航项没有被修改,因此只会显示默认标题。

修复方案

不要通过导航栏获取item,直接访问当前ViewController自带的navigationItem属性配置标题视图即可,该属性对应当前控制器在导航栏上的专属配置项,无论当前控制器是根节点还是push出的新实例都能生效。

修正后代码如下:

let titleView = Bundle.main.loadNibNamed("TitleView", owner: self, options: nil)?[0] as? TitleView
navigationItem.titleView = titleView

补充注意项

如果修改后titleView仍无显示,可以检查自定义的TitleView是否设置了明确的尺寸:你可以给TitleView添加固定宽高约束,也可以在TitleView的实现中重写intrinsicContentSize属性返回固定大小,避免因布局尺寸异常导致视图不展示。

内容的提问来源于stack exchange,提问作者Ginso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:04