繁体   English   中英

如何在按钮的 addtarget function 中传递参数?

How to pass argument in button's addtarget function?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个由代码编写的按钮。

func someFunc(id: Int) {
    let button = UIButton(frame: CGRect(x: 0, y: 0, width: 32, height: 32))
}

我需要当我单击按钮时,它会将 id(写在上面的函数中)发送到我的 function。

所以,我正在写@objc func

@objc func buttonAction(sender: UIButton) {

    passIdHere(id: Int) //here I need to write my id inspite of int
        
}

并将其添加到我的按钮中。

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

任何人都可以帮忙吗?

1 个回复

你不能按照你的计划去做。 但是UIButton具有Int类型的.tag属性。 您可以使用它来传递 id。

func someFunc(id: Int) {
    let button = UIButton(frame: CGRect(x: 0, y: 0, width: 32, height: 32))
    // add the tag to the button
    button.tag = id
}

接着:

@objc func buttonAction(sender: UIButton) {
    // read the id from the tag
    passIdHere(id: sender.tag ) //here I need to write my id inspite of int
    
}

编辑:

关于您对使用 Dictionary 作为参数的评论:

这将需要更多的编码。

//Create a custom class that derives from UIButton
class MyButton: UIButton{
    //Create a variable to hold your array and initialize it
    var anyTag: [Int:String] = [:]
}

func someFunc(id: Int) {
    //Create a MyButton instead of a Button
    let button = MyButton(frame: CGRect(x: 0, y: 0, width: 32, height: 32))
    // add the tag to the button
    button.anyTag = [1:"test"]
}

@objc func buttonAction(sender: UIButton) {
    // cast the sender to MyButton
    guard let button = sender as? MyButton else{
        return
    }
    
    // retrieve the dictionary
    let dictionary: [Int:String] = button.anyTag
    
}
1 如何在按钮的addtarget中传递参数

我有一张底纸,在那张纸上有一个按钮。 我希望当我点击那个按钮时它 go 到它相关的页面。 所以,我把它从 storyboard 连接到代码 并为按钮编写了扩展名。 在我单击按钮的集合视图中,我调用了这些方法。 在这里,我使用按钮的标签在 addtarget 中传递参数。 但是,当点击按钮时,它不会做 ...

2 如何快速将参数传递给按钮的addTarget方法

我有一个CollectionViewCell,我正在研究它的cellForItemAt方法。 我在每个“收藏夹”视图单元格中都有一个按钮,该按钮在我的CollectionView中定义了3个不同的部分。 我正在添加以下代码来设置按钮目标:cell.buttonView.addTarget ...

4 为什么我的 addTarget 在按钮上的功能不起作用?

我正在实现一些要在点击按钮后调用的函数,但不会调用该函数的主体。 这是我的代码,它演示了我需要做什么 这就是我的 init 中发生的事情 PS:setAnchor 是我创建的一个函数,用于以编程方式设置视图的约束 ...

2020-02-08 14:00:03 1 61   ios/ swift
5 如何以参数作为参数传递函数

我有一堆写起来很简单的方法,但是它们都需要处理异常。 异常管理始终是相同的,因此我想将包装器作为函数编写,并以特定的函数调用实例作为参数来调用。 可能吗? 遵循这些原则(这是无效的插图): 注意:我在寻找不需要类定义的答案。 另外,我不熟悉python中的lambda函数,但 ...

6 如何在addTarget的操作中传递参数?

我是一个初学者,而不是一个英语家庭。 所以我的英语很差。。。如何将参数传递给函数。 这是我的代码: 我对动态添加的文本字段使用数组,所以我需要知道“ i” [test.ViewController textChang(1)]:无法识别的选择器已发送到实例0x7ff852d0 ...

7 如何在addTarget #Selector中将静态参数传递给UIRefreshControl()的局部函数

我已经将refreshcontrol添加到我的表视图中,而下拉时,它应该以字典为参数调用本地方法。 但是我进行了很多搜索,但是无法将字典作为uirefreshcontrol的addTarget中的参数发送。 请帮我用字典作为参数调用本地方法。 我试过的是使用objc,也没有选择器,但是 ...

8 Tkinter:如何在单击按钮时将按钮的文本作为参数传递给函数

我有以下代码生成一个 5x5 尺寸的随机按钮网格: 我已经实现了命令函数并传递了一个带有 lambda 的参数,如下所示: 现在,当我单击按钮时,函数调用应该打印分配给它的文本值。 相反,它只是打印相同的值,即 num 变量中最后分配的值:当我单击按钮 20 时输出 有什么解决办法吗?? ...

9 如何在将参数绑定到按钮时将参数传递给 function

我有一个简单的程序,它制作了两个密码框和两个按钮,它们应该在各自的输入框中显示和取消显示文本。 这是我当前的代码: 我想这样做,以便我可以像这样将参数传递给show_chars和show_stars function: 这样它就不会显示和取消显示相同的输入框。 有什么办法可以做到这一点吗? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM