自定义UIButton作为导航项目后退按钮工作,但不显示

时间:2016-12-20 14:18:10

标签: swift uibutton swift3 uinavigationbar uinavigationitem

    let btnName = UIButton()
    btnName.setImage(UIImage(named: "backIcon"), for: .normal)
    btnName.addTarget(self, action: #selector(AddContactViewController.backAction), for: .touchUpInside)
    let leftBarButton = UIBarButtonItem()
    leftBarButton.customView = btnName
    self.navigationItem.leftBarButtonItem = leftBarButton

它工作正常,它可以完成预期的工作。但是,在导航项上它是不可见的。但是,当我点击它应该在的区域。它有效。

3 个答案:

答案 0 :(得分:2)

实际上,您可能有两个导航栏,一个属于您当前的班级,另一个属于您之前的班级。因此,您可以尝试在上一课程中添加以下代码。

override func viewWillDisappear(_ animated: Bool) {
        self.navigationController!.navigationBar.isHidden = true
}

我也面临同样的问题,它对我有用。可能它会帮助你。

答案 1 :(得分:0)

一切都很好,除了你忘了为你的按钮设置框架,这就是它没有被显示的原因。

let btnName = UIButton(frame: CGRect(x: 0, y: 0, width: 18, height: 17))
btnName.setImage(UIImage(named: "backIcon"), for: .normal)
btnName.addTarget(self, action: #selector(AddContactViewController.backAction), for: .touchUpInside)

let leftBarButton = UIBarButtonItem()
leftBarButton.customView = btnName

self.navigationItem.leftBarButtonItem = leftBarButton

答案 2 :(得分:0)

在设置图像,标题等之后,最好不要对某些帧值进行硬编码,最好调用sizeToFit()方法。我今天遇到了这个问题,其中自定义后退按钮在iOS11上显示OK,但不是在iOS9上可见。

RDataMining-Tweets-20160203.rds