ios - 坚持以编程方式将目标添加到按钮

标签 ios swift uibutton

我创建了一个 UIButton,我希望它在按下时打印一些消息。

所以我做了这样的事情: 在 loadView() 中

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

一个方法:

func pressButton(button: UIButton) {

    NSLog("pressed!")

}

但是当我点击按钮时没有任何反应。

最佳答案

在您的 viewDidLoad 中添加按钮代码,它将为您工作:

override func viewDidLoad() {
    super.viewDidLoad()
    let button = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
    button.backgroundColor = UIColor.gray
    button.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
    self.view.addSubview(button)
}

func pressButton(button: UIButton) {
    NSLog("pressed!")
}

您不需要将 ViewController.pressButton 添加到 selector,使用 function name 就足够了。

Swift 4.x 版本:

let button = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
button.backgroundColor = .gray
button.tag = 0
button.addTarget(self, action: #selector(pressButton(_:)), for: .touchUpInside)
self.view.addSubview(button)

@objc func pressButton(_ button: UIButton) {
    print("Button with tag: \(button.tag) clicked!")
}

Swift 5.1 版本:

let button = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
button.backgroundColor = .gray
button.tag = 100
button.addTarget(self, action: #selector(pressButton), for: .touchUpInside)
self.view.addSubview(button)

@objc func pressButton(button: UIButton) {
    print("Button with tag: \(button.tag) clicked!")
}

关于ios - 坚持以编程方式将目标添加到按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815352/

相关文章:

ios - UIButton 的剪辑图像

iphone - 在 XCode 4.3.2 中符号化崩溃日志

ios - 一个 View Controller 上的多个 View Controller

ios - 在 Swift 中,我希望最后 3 个部分的行中只有标签(而不是文本字段)

ios - HTML标记会使JSON文件无效吗?

ios - 当我传递给另一个 viewController 时,底部 tabBar Controller 不会隐藏

iphone - 记住swift中2个ViewController的高分

ios - Frame.size.width 不返回正确的 UIButton 宽度

ios - 以编程方式在具有约束的按钮上添加图像 (Swift)

ios - 使用相同的请求标识符同时注册 2 个本地通知而不覆盖