【问题标题】:Custom UIButton as Navigation Item Back Button working, but does not show自定义 UIButton 作为导航项返回按钮工作,但不显示
【发布时间】:2016-12-20 14:18:09
【问题描述】:
    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

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

【问题讨论】:

  • 检查你的项目中是否存在图标图像

标签: swift uibutton swift3 uinavigationbar uinavigationitem


【解决方案1】:

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

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

我也遇到了同样的问题,它对我有用。可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    一切正常,只是您忘记为按钮设置框架,这就是它没有显示的原因。

    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
    

    【讨论】:

      【解决方案3】:

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

      btnName.sizeToFit()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 2014-08-04
        • 2018-10-24
        相关资源
        最近更新 更多