gpt4 book ai didi

ios - swift 4 : programmatically created button addTarget crashes inside delegated class

转载 作者:行者123 更新时间:2023-11-30 11:13:26 25 4
gpt4 key购买 nike

我创建了一个委托(delegate)协议(protocol),该协议(protocol)创建一个 UIButton 并将其添加到父 View 中。

protocol ButtonInputFactoryDelegate {
func buttonAction(in formFactory: SubmitInputFactory)
}

在委托(delegate)类中,我有两种方法,一种用于创建按钮,第二种用于实现委托(delegate)的按钮操作。

class myButtonClass {

(...)

func setupButton() {
guard let delegate = self.delegate else { return }

// Button creation and setup

submitButton.addTarget(self.parentViewController, action: #selector(internalButtonAction(_:)), for: .touchUpInside)

self.parentViewController.view.addSubview(submitButton)
}

@objc func internalButtonAction(_ sender: UIButton) {
guard let delegate = self.delegate else { return }

delegate.buttonAction(in: self)
}
}

在 viewController 中我有以下内容

class TestViewController: UIViewController, ButtonInputFactoryDelegate {
override func viewDidLoad() {
(...)
myButtonClass.delegate = self
myButtonClass.setupButton()
}

func buttonAction(in formFactory: SubmitInputFactory) {
print("Test")
}
}

然后,当单击按钮时,它应该被调用 internalButtonAction 并在 delegate.buttonAction 内部执行

Xcode编译没有错误,但是点击按钮时出现以下错误

(...)无法识别的选择器发送到实例 0x102139200

你知道会发生什么吗?谢谢!

最佳答案

如果您的 setupButtonbuttonAction 方法位于同一个类中,您应该将 addTarget(self.parentViewController, 更改为 addTarget ( self ,

关于ios - swift 4 : programmatically created button addTarget crashes inside delegated class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com