簡體   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