backBarButtonItem 显示图像不正确

backBarButtonItem display image incorrect

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

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
    }

}

结果是

尝试使用:

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.

编辑:

在源视图控制器而不是目标控制器中使用此代码。

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