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

iOS:PushSegue跳转后导航栏按钮不显示及编程自定义按钮问题

嘿,我来帮你搞定这个导航栏按钮的问题~

解决导航栏按钮不显示及自定义需求

为什么Storyboard中的按钮没显示?

你是通过代码手动实例化MainTextView并执行push跳转的,这种情况下Storyboard里给该ViewController配置的导航栏元素(包括返回按钮、自定义按钮)不会自动生效——因为Storyboard的导航栏设置是绑定在可视化segue跳转流程中的,手动实例化的ViewController不会继承这些配置。

用代码自定义返回按钮+添加额外按钮

你需要在MainTextView的viewDidLoad方法里手动配置navigationItem的按钮,具体代码和步骤如下:

1. 完整实现代码

在MainTextView类中添加以下代码:

override func viewDidLoad() {
    super.viewDidLoad()
    
    // 自定义左侧返回按钮(替换系统默认)
    let customBackBtn = UIBarButtonItem(title: "返回", style: .plain, target: self, action: #selector(backToPreviousPage))
    navigationItem.leftBarButtonItem = customBackBtn
    
    // 添加右侧自定义按钮(比如“保存”按钮)
    let saveBtn = UIBarButtonItem(title: "保存", style: .done, target: self, action: #selector(saveContent))
    navigationItem.rightBarButtonItem = saveBtn
}

// 返回按钮点击事件
@objc private func backToPreviousPage() {
    navigationController?.popViewController(animated: true)
}

// 右侧按钮点击事件
@objc private func saveContent() {
    // 这里写你的按钮逻辑,比如处理内容保存
    print("保存按钮被触发啦")
}

2. 可选优化:在列表页统一控制返回按钮标题

如果你想让所有从列表页push出去的页面,返回按钮标题统一显示为“列表”,可以在列表ViewController的viewDidLoad里设置,不用在目标页单独写返回按钮:

// 列表ViewController的viewDidLoad方法中添加
navigationItem.backBarButtonItem = UIBarButtonItem(title: "列表", style: .plain, target: nil, action: nil)

3. 关键前提确认

确保你的列表ViewController已经被包裹在UINavigationController中,否则navigationController?.pushViewController会失效,导航栏本身都不会显示哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:50:56