gpt4 book ai didi

ios - 将静态参数添加到 Swift 中的#selector

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:35 24 4
gpt4 key购买 nike

是否可以通过选择器传递一个 int 变量,例如#selector(run(1)) 或#selector(run(2))

如有必要,请提供更多上下文:

let button = UIBarButtonItem(title: "Run",
style: UIBarButtonItemStyle.Plain,
target: self,
action: #selector(run(1)))

最佳答案

在向一些 iOS 开发者确认后,不,你还不能这样做。

但还有一个选择。您可以在操作方法中接收发送者对象。您可以将任何属性添加到发件人类。并在操作方法中接收它。

例如:

第一种方法

let button = UIBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(_:)))
button.tag = 1

你可以这样接收

func run(sender: UIBarButtonItem) {
let passedInteger = sender.tag
}

但它只有在传递的参数是单个 Integer 时才有效。如果你想传递任何数据类型的多个参数,你可以这样做 -> 查看第二种方法

第二种方法

子类 UIBarButtonItem

class MyBarButtonItem: UIBarButtonItem {
var passedParameter: String?
}

然后像这样接收

let button = MyBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(sender:)))

button.passedParameter = "John Doe"

func run(sender: MyBarButtonItem) {
// now you have the parameter
let parameter = sender.passedParameter
}

关于ios - 将静态参数添加到 Swift 中的#selector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com