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
相关产品推荐
相关产品推荐

