【问题标题】:UIResponder chain not working in UIButton actionUIResponder 链在 UIButton 操作中不起作用
【发布时间】:2020-09-29 13:25:47
【问题描述】:

我在子视图控制器中有一个 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 方法,也没有发生崩溃。

【问题讨论】:

  • 为什么你没有尝试基本视图控制器概念

标签: ios swift xcode uibutton uiresponder


【解决方案1】:

您可以在 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 ")
    }
}

【讨论】:

  • 您需要在函数范围之外创建parentVC。我又更新了支票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2013-05-15
  • 2012-11-08
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多