首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数附加到Swift中的button.addTarget操作

将参数附加到Swift中的button.addTarget操作
EN

Stack Overflow用户
提问于 2014-07-18 06:35:59
回答 4查看 150.8K关注 0票数 117

我正在尝试向buttonClicked操作传递一个额外的参数,但无法确定Swift中的语法应该是什么。

代码语言:javascript
运行
复制
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)

任何my buttonClicked方法:

代码语言:javascript
运行
复制
func buttonClicked(sender:UIButton)
{
    println("hello")
}

有人有什么想法吗?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2015-10-08 10:09:28

如果要向buttonClicked方法发送其他参数,例如indexPath或urlString,则可以将UIButton子类化:

代码语言:javascript
运行
复制
class SubclassedUIButton: UIButton {
    var indexPath: Int?
    var urlString: String?
}

确保在标识检查器中将按钮的类更改为subclassedUIButton。您可以使用sender.indexPathsender.urlString访问buttonClicked方法中的参数。

注意:如果您的按钮位于单元格内,则可以在cellForRowAtIndexPath方法(按钮的创建位置)中设置这些附加参数的值。

票数 84
EN

Stack Overflow用户

发布于 2016-12-27 20:30:53

对于Swift 3.0,您可以使用以下命令

代码语言:javascript
运行
复制
button.addTarget(self, action: #selector(YourViewController.YourMethodName(_:)), for:.touchUpInside)

func YourMethodName(_ sender : UIButton) {
    print(sender.tag)

}
票数 10
EN

Stack Overflow用户

发布于 2019-04-18 07:55:49

Swift 5.0代码

我使用theButton.tag,但如果我有很多类型的选项,它是非常长的切换情况。

代码语言:javascript
运行
复制
theButton.addTarget(self, action: #selector(theFunc), for: .touchUpInside) 
theButton.frame.name = "myParameter"

代码语言:javascript
运行
复制
@objc func theFunc(sender:UIButton){ 
print(sender.frame.name)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24814646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档