我有一个简单的视图V和视图控制器C.控制器调用一个单独的类X来构建一个webview和一个按钮来关闭webview。
我实例化类X(引用视图V)然后调用方法来附加两个项目(webview和项目)。
当我调用按钮addTarget方法时,它不起作用。我希望它执行X类的closeAll方法而不是C控制器的closeAll方法。
我尝试了数百种变体。
以下是C controller中代码的(部分):
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")
}
答案 0 :(得分:0)
将自我更改为您希望触发方法的类的实例
答案 1 :(得分:0)
*我认为这对您有帮助*
override func viewDidLoad()
{
super.viewDidLoad()
transparentButton.addTarget(self, action:#selector(closeAll),
for: .UIControlEvents.valueChanged)
}
Fun closeAll(sender:AnyObject)
{
//your code
}
OR
@IBOutlet var btnStartJob: UIButton!
override func viewDidLoad()
{
super.viewDidLoad()
btnStartJob.addTarget(self, action: #selector(closeAll), for: .touchUpInside)
}
Fun closeAll(_ sender : UIButton)
{
//your code
}