繁体   English   中英

在同一个类中调用 UIButton AddTarget

[英]Call UIButton AddTarget in the same class

我有一个简单的视图 V 和视图控制器 C。控制器调用一个单独的类 X,它构建一个 webview 和一个按钮来关闭 webview。

我实例化类 X(引用视图 V)然后调用一个方法来附加两个项目(webview 和项目)。

当我调用按钮 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)
}

func closeAll(sender:AnyObject) {
    // your code
}

@IBOutlet var btnStartJob: UIButton!
override func viewDidLoad()    {  
    super.viewDidLoad()
    btnStartJob.addTarget(self, action: #selector(closeAll), for: .touchUpInside)
}

func closeAll(_ sender : UIButton) {
    // your code
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM