backBarButtonItem 显示图片不正确
Posted
技术标签:
【中文标题】backBarButtonItem 显示图片不正确【英文标题】:backBarButtonItem display image incorrect 【发布时间】:2018-07-16 16:33:09 【问题描述】:我正在使用自定义UIBarButtonItem
和backBarButtonItem
的图像。我发现了奇怪的行为,因为除了我的图像之外,还显示了默认的箭头图标。
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
navigationItem.backBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "BackButtonIcon"), style: .plain, target: nil, action: nil)
@IBAction private func push(_ button: UIButton)
let secondViewController = SecondViewController()
navigationController?.pushViewController(secondViewController, animated: true)
class SecondViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = .white
结果是
【问题讨论】:
那么为什么它不正确?是显示错误的图像还是只是您有两个按钮?请编辑您的问题以使其更清楚 @George_E_2 我写的不正确,因为我的图片和标准图片都显示了。 【参考方案1】:尝试使用:
navigationBar.backIndicatorImage = #imageLiteral(resourceName: "BackButtonIcon")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = #imageLiteral(resourceName: "BackButtonIcon")
navigationItem.backBarButtonItem = UIBarButtonItem(title: "Title", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
导航栏有一个用于背景图像的属性以及作为 UINavigationItem 的 backItem 属性。你可以阅读更多here。
编辑:
在源视图控制器而不是目标控制器中使用此代码。
【讨论】:
我知道这个属性,但我想知道为什么我不能像上面那样做 你不能做什么? @Alexander 我已经编辑了我的答案,并提供了更多详细信息来解决您的问题。【参考方案2】:在viewDidLoad
或viewWillAppear
中尝试self.navigationItem.setHidesBackButton(true, animated: true)
。
编辑:这隐藏了本机后退按钮。然后你应该可以设置你自己的。
【讨论】:
以上是关于backBarButtonItem 显示图片不正确的主要内容,如果未能解决你的问题,请参考以下文章
iOS 为啥在这种情况下 backBarButtonItem 为零
如何用 backBarButtonItem 替换 leftBarButtonItem
pushViewController 后,如何禁用 backBarButtonItem?