Ios 如何在Swift中替换物料中的后退按钮

Ios 如何在Swift中替换物料中的后退按钮,ios,swift,swift3,cosmicmind,Ios,Swift,Swift3,Cosmicmind,我想改变后退按钮的行为,我用新的条形按钮替换材质的后退按钮,如下图所示: let backButton: UIButton = { let btn = UIButton() btn.setImage(UIImage(named: "prev"), for: .normal) btn.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2) return btn }() 在查看加载功能中: override fu

我想改变后退按钮的行为,我用新的条形按钮替换材质的后退按钮,如下图所示:

let backButton: UIButton = {
    let btn = UIButton()
    btn.setImage(UIImage(named: "prev"), for: .normal)
    btn.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2)

    return btn
}()
在查看加载功能中:

override func viewDidLoad() {
    super.viewDidLoad()

    backButton.action = { [weak self] in self?.showAlert() }
    let barButton = UIBarButtonItem(customView: backButton)
    navigationItem.backButton.isHidden = true
    navigationItem.leftBarButtonItems = [barButton]
}
但我无法单击“新建后退”按钮,因为该按钮已被UINavigationBarBackIndicatorView覆盖

如何用材质替换后退按钮。我想保留材质库,因为在项目的其他功能中,我需要材质


提前感谢您的帮助。

在您的
viewDidLoad()方法中执行此操作:

    self.navigationItem.backBarButtonItem.hidden = YES
    let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(YourViewController.back(sender:)))
    self.navigationItem.leftBarButtonItem = newBackButton
    self.navigationItem.leftBarButtonItem?.image = UIImage(named : "prev")
    self.navigationItem.leftBarButtonItem?.accessibilityFrame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2)
然后在视图控制器中定义一个名为
back
的函数,该函数将为新的后退按钮执行所需的操作

func back(sender: UIBarButtonItem) {
        // Perform your custom action
    }
注意无需定义单独的按钮变量


**如果
self.navigationItem.backbarbuttoneim.hidden=YES
不起作用,则将其替换为
self.navigationItem.backbarbuttoneim=nil**

使用backButton.ishiden与包含新自定义图标的leftViews一起添加图标按钮对我来说很有用,我使用的是Material 2.17.0

func setNavigation() {
        let backButton = IconButton(image: Icon.cm.arrowBack)
        backButton.addTarget(self, action: #selector(onBackTapped), for: .touchUpInside)
        navigationItem.leftViews = [backButton]
        navigationItem.backButton.isHidden = true
    }

感谢您的回答,但Material的“后退”按钮没有隐藏。或者您可以尝试以下操作:
navigationItem.hidesBackButton=true
,首先使用我显示的代码,然后根据需要进行更改我在
开发
分支中为您进行了修复。如果您在github上对此有疑问,我将在主分支中发布它后立即更新您。不应超过几天。您的问题已解决?已修复:。我真的很感谢你对我的问题的帮助。如果你觉得我的答案有用,请将其标记为有用/接受