在向按钮点击事件添加func时修复“使用未解析的标识符'addTarget'”

问题描述 投票:-1回答:3

我已经以编程方式创建了一个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。我该如何解决?

ios uibutton addtarget
3个回答
1
投票

你试图在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


0
投票

代码更改:

{ ...

    buttons[0].addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)

... }

@objc func buttonClicked(_ button: UIButton) {

    button.setTitle("Clicked", for: .normal)
}

0
投票

首先,你正在创造[UIButton],这是ArrayUIButton,它不是一个单一的按钮。

你不能以这种方式创建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)
© www.soinside.com 2019 - 2024. All rights reserved.