在同一个类中调用UIButton AddTarget
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在同一个类中调用UIButton AddTarget相关的知识,希望对你有一定的参考价值。
我有一个简单的视图V和视图控制器C.控制器调用一个单独的类X,它构建一个webview和一个关闭webview的按钮。
我实例化了类X(带有对视图V的引用),然后调用一个方法来附加两个项(webview和items)。
当我调用按钮addTarget方法时,它不起作用。我希望它执行X类的closeAll方法而不是C控制器的closeAll方法。
我尝试过数百种变体。
这是C控制器中代码的(部分):
let parentView:UIView
...
@objc func closeAll() {
print("Close webview, object")
}
这在X类中:
...
let transparentButton = UIButton(frame: frame)
transparentButton.backgroundColor = UIColor.black.withAlphaComponent(self.overlayTransparency)
transparentButton.setTitle("", for: .normal)
transparentButton.alpha = 0.5
transparentButton.isUserInteractionEnabled = true
transparentButton.addTarget(self, action:#selector("closeAll"), for: .touchUpInside)
parentView.addSubview(transparentButton)
我在我的C控制器中有这个,它点击时调用:
@objc func closeAll() {
print("Close webview, main")
}
答案
将self更改为您希望触发方法的类的实例
另一答案
*我认为这对你有帮助*
override func viewDidLoad()
{
super.viewDidLoad()
transparentButton.addTarget(self, action:#selector(closeAll),
for: .UIControlEvents.valueChanged)
}
Fun closeAll(sender:AnyObject)
{
//your code
}
要么
@IBOutlet var btnStartJob: UIButton!
override func viewDidLoad()
{
super.viewDidLoad()
btnStartJob.addTarget(self, action: #selector(closeAll), for: .touchUpInside)
}
Fun closeAll(_ sender : UIButton)
{
//your code
}
以上是关于在同一个类中调用UIButton AddTarget的主要内容,如果未能解决你的问题,请参考以下文章
uibutton 添加目标选择器方法在调用类而不是在被调用类中调用
未调用自定义 UIButton 的 setIsSelected 方法