backBarButtonItem 显示图片不正确

Posted

技术标签:

【中文标题】backBarButtonItem 显示图片不正确【英文标题】:backBarButtonItem display image incorrect 【发布时间】:2018-07-16 16:33:09 【问题描述】:

我正在使用自定义UIBarButtonItembackBarButtonItem 的图像。我发现了奇怪的行为,因为除了我的图像之外,还显示了默认的箭头图标。

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】:

viewDidLoadviewWillAppear 中尝试self.navigationItem.setHidesBackButton(true, animated: true)。 编辑:这隐藏了本机后退按钮。然后你应该可以设置你自己的。

【讨论】:

以上是关于backBarButtonItem 显示图片不正确的主要内容,如果未能解决你的问题,请参考以下文章

iOS 为啥在这种情况下 backBarButtonItem 为零

如何用 backBarButtonItem 替换 leftBarButtonItem

pushViewController 后,如何禁用 backBarButtonItem?

分享图片元素过渡显示尺寸不正确

jsp--- jsp图片上传到了正确路径,但在正确路径显示不出来

点击backBarButtonItem时消息怎样拦截