在同一个类中调用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 选择器

未调用自定义 UIButton 的 setIsSelected 方法

没有调用目标为 nil 的 UIButton 函数?

带有在另一个类中声明的 pushViewController 的 UIButton

如何在另一个类中禁用 uibutton 而无需导航到该类