如何在 Swift 4 中以编程方式将 IBAction 添加到按钮?

Posted

技术标签:

【中文标题】如何在 Swift 4 中以编程方式将 IBAction 添加到按钮?【英文标题】:How do I add a IBAction to a button programmatically in Swift 4? 【发布时间】:2017-10-26 08:59:51 【问题描述】:

如何以编程方式将 IBAction 添加到按钮?

button.addTarget(self, action: Selector(("buttonAction:")), for: 
.touchUpInside)

func buttonAction(sender: Any) 
    print("test")

这给了我一个“Thread 1: signal SIGABRT”错误。

【问题讨论】:

“您在代码中删除了 Outlet/Action 连接或重命名了它(拼写错误?)。” - 不是的情况:') btn.addTarget(self, action: #selector(testFunction(_:)), for: .touchDown) swift 3.2 从技术上讲,您不会以编程方式“添加”IBAction - “IB”代表“Interface Builder”。您要问的是如何在addTarget(action:) 调用中使用sender 【参考方案1】:

Swift 4 版本:

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

@objc private func action(sender: Button) 
    print("test")

【讨论】:

感谢您的回复,是的,我以前看过这段代码。但是 Swift 对我大喊:“'#selector' 的参数指的是未暴露给 Objective-C 的实例方法 'buttonAction(sender:)' 添加 '@objc' 以将此实例方法暴露给 Objective-C " 这就是为什么会有@objc 注释 @Mofawaw 然后添加“@objc”,应该看起来像“@objc func buttonAction()” @objc func action(sender: Button) 我不得不等待 2 分钟,而不是我的编程。 :')

以上是关于如何在 Swift 4 中以编程方式将 IBAction 添加到按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中以编程方式将 UILabel 对象居中?

在 Swift 4 中以编程方式将 UIImageView、UILabel 添加到 UIStackView

当 UIStepper 在 Swift 4 中以编程方式点击时如何更改 UILabel 的文本,如果它们都在 UITableViewCell 中?

当 iAd 横幅出现时,如何将视图的内容上移? (在 Swift 中以编程方式)

如何在 Swift 中以编程方式创建 SplitViewController?

如何在 Swift 中以编程方式旋转一组按钮?