ios - 为什么为 UINavigationItem 设置自定义 backBarButtonItem 会导致双后退按钮?
问题描述
我有一个非常简单的设置。具有根 UIViewController 的 UINavigationController 使用自定义后退按钮项修改其导航项viewDidLoad
。
let backButton = UIBarButtonItem(image: backArrowImage,
style: .plain,
target: nil,
action: nil)
navigationItem.backBarButtonItem = backButton
我希望这会用标题和默认的后退箭头图标完全替换系统后退按钮。
但是,当我在堆栈上推送新的视图控制器时,导航栏会同时绘制新的自定义后退图标和系统后退图标。
这就是我所看到的:
这就是我期望它的样子:
解决方案
您可以隐藏后退按钮
navigationItem.hidesBackButton = true
并leftBarButtonItem
用于自定义UIBarButtonItem
UPD
import UIKit
final class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.hidesBackButton = true
let backItem = UIBarButtonItem(image: backArrowImage, style: .plain, target: self, action: #selector(backButtonPressed))
navigationItem.leftBarButtonItem = backItem
}
@objc func backButtonPressed() {
navigationController?.popViewController(animated: true)
}
}
推荐阅读
- bitbucket-pipelines - 无法解析路径 sonarscan 和 bitbucket
- javascript - 如何处理子组件中的输入错误验证反应钩子形式
- sql - Oracle中如何根据特定条件统计数据
- python - 为什么我会收到此 python kivy 错误:CRITICAL] [App] Unable to get a Window, abort?
- javascript - 与带有 onClick 的表单无关的按钮在表单中不起作用
- python - 将二维数组传递给函数
- azure - 尽管响应包含 Failed,但 Web 活动成功运行
- java - 无法使用py4j从python调用java方法?
- c# - 如何在不覆盖文件和表格的情况下保存 .xml 文件?C#
- tensorflow - E: 包 'python3-distutils' 没有安装候选