UIResponder 链在 UIButton 操作中不起作用

UIResponder chain not working in UIButton action

我在子视图控制器中有一个 uibutton,它的操作需要在父视图控制器中调用。 这是我的代码

class ChildViewController: UIViewController {

    @IBOutlet weak var btn: UIButton!

    override func viewDidLoad() {
      super.viewDidLoad()
      btn.addTarget(nil, action: Selector(("onBtnTap")), for: .touchUpInside)
    }
 }

class ParrentViewController: UIViewController {

   override func viewDidLoad() {
     super.viewDidLoad()
   }

  func onBtnTap(sender: Any) {
    print("Hey, I am Parent VC ")
  }
}

当我点击按钮时,没有调用 onBtnTap 方法并且没有发生崩溃。

您可以在 Child 中创建 Parent 的实例来实现此目的,方法如下:

class ChildViewController: UIViewController {

    @IBOutlet weak var btn: UIButton!
    let parentVC = ParentViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
        btn.addTarget(parentVC, action: #selector(parentVC.onBtnTap(sender:)), for: .touchUpInside)
    }
}

class ParentViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @objc func onBtnTap(sender: Any) {
        print("Hey, I am Parent VC ")
    }
}