在同一个类中调用UIButton AddTarget

时间:2017-12-19 17:10:59

标签: ios swift uiview uibutton addtarget

我有一个简单的视图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")
}

2 个答案:

答案 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

   }