【问题标题】:How to make back button tappable in navigation bar with unwind segue using swift如何使用swift在导航栏中通过展开segue使后退按钮可点击
【发布时间】:2021-09-29 16:22:02
【问题描述】:

我创建了一个带有导航栏按钮的自定义视图。见照片:custom view with button

我也在我的视图控制器中输入了这段代码,并将这个带有按钮的视图加载到我的导航栏,所以我可以改变按钮的位置和侧面。

let backButton = UIBarButtonItem(customView: self.backButtonView)

        self.navigationController?.delegate = self
        self.navigationItem.leftBarButtonItem = backButton

这正是我想要的,但是我怎样才能让这个按钮可以点击,这样我就可以进行一些操作或自定义展开转场。 How it looks in simulator

【问题讨论】:

  • 您必须在自定义按钮上添加目标,并在主控制器上回调
  • @Vishal_VE 你能分享一下它应该是什么样子吗?
  • 你能分享一下你是如何创建backButtonView的

标签: ios swift uinavigationcontroller uinavigationbar


【解决方案1】:

您可以像下面这样创建自定义按钮

lazy var backButton: UIButton = {
    let button = UIButton(frame: CGRect.init(x: 0, y: 0, width: 40, height: 40))
    button.setImage(UIImage.init(named: "icBack"), for: .normal)
    button.addTarget(self, action: #selector(leftBarButtonAction(sender:)), for: .touchUpInside)
    return button
}()

将此按钮用作 UIBarButtonItem 的自定义视图

let backButtonItem = UIBarButtonItem(customView: self.backButton)
self.navigationController?.delegate = self
self.navigationItem.leftBarButtonItem = backButton

并创建如下选择的方法。

@objc func leftBarButtonAction(sender: AnyObject) {
     self.performSegue(withIdentifier: “unwindToXVC”, sender: self)
}

【讨论】:

  • 我的图像变大了,我该如何改变它的大小?动作也不起作用,也许你知道如何制作这个解决方案,就像今天所说的那样:你必须在自定义按钮上添加目标,并在主控制器上回调
  • 通常我们必须为 iOS 资源提供 1x、2x 和 3x 大小的图标。对于导航栏图标,所需的图标大小为 24x24 pt (72x72 px @3x)。尝试提供所需大小的图标。在上面的例子中,我已经添加了按钮目标。 button.addTarget(self, action: #selector(leftBarButtonAction(sender:)), for: .touchUpInside)
  • 看起来不错,谢谢,但是如何将它与自定义展开转场一起使用?
  • @mozeX 请参阅我已使用示例 segue 编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多