在向按钮单击事件添加功能时修复 "use of unresolved identifier 'addTarget'"

Fixing "use of unresolved identifier 'addTarget'" while adding func to button click event

我已经以编程方式创建了一个 UIButton,如下所示:

let buttons: [UIButton] = [UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))];

现在,如果我尝试像这样以编程方式向其添加函数:

[buttons[0] addTarget:self action:@selector(buttonClicked:)forControlEvents:UIControlEventTouchUpInside]

我收到一条错误消息,提示未定义 addTarget。 我该如何解决这个问题?

你试图在 swift 中使用 Objective-C 语法,这是完全错误的,请像

一样使用你的代码
 buttons.first?.addTarget(self, action: #selector(self.buttonClicked(_:)), for: .touchUpInside)

并像这样处理操作

 @objc func buttonClicked( _ sender: UIButton) {
       print("buttonClicked Action Found")

}

参考:Apple Document for UIButton

首先,您要创建 [UIButton],它是 UIButtonArray,而不是单个 Button。

您不能以这种方式创建 ArrayUIButton。您将需要一个 for 循环,并且您需要相应地更新 frame

您可以这样创建一个 UIButton

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))

然后你可以这样将它添加到 UIView:

self.view.addSubview(button)

如果没有上面一行,您的按钮将不会显示在您的屏幕上。

接下来,如果您想向该按钮添加操作,可以通过在按钮代码中添加以下行来实现:

button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)

并且它需要一个辅助方法,该方法将在单击按钮时执行。

@objc func buttonClicked(_ sender: UIButton) {
    //Perform your action when button is clicked.
}

您还需要对按钮应用 backgroundColorsetTitle

您的最终代码将如下所示:

let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
button.backgroundColor = UIColor.green
button.setTitle("Test Button", for: .normal)
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
self.view.addSubview(button)