我一直在全国各地念叨选择,现在想知道是否有一种方法我怎么能为功能属性选择器发送的值。
我有一个方法:
@objc func acceptBiometrics(newValue: Int){
}
和选择:
#selector(acceptBiometrics(newValue:))
那么,有没有一种方法,我可以送让说1作为新的价值,这样我就可以有两个选择调用相同的功能,只是不同的价值?
编辑1:我那么这个选择发送一些视图控制器与一个按钮创建自己的警报视图控制器。因此,选择被调用在一个完全不同的视图控制器。难道这样做,则还发送VC也是我想与选择送价值的唯一途径?没有一种方法,我可以做类似#selector(self.acceptBiometrics(NEWVALUE:1))
你不知道。
您可以使用button.tag
并设置1(或任何其他Int
值)它。
let button = UIButton()
button.tag = 1
button.addTarget(self, action: #selector(acceptBiometrics(_ :)), for: .touchUpInside)
然后在您的处理程序:
@objc func acceptBiometrics(_ sender : UIButton) {
print(sender.tag)
}
笔记:
一个tag
属性是Int
变量,所以如果你想要的任何其他Type
你应该创建只是一个新的变量定制UIButton
。
该tag
默认值是0,这意味着如果0是你的逻辑可能的值,你也应该做的自定义组件的方法。
正如@马特指出,“选择是一种方法,而不是一个方法调用的名称”。
作为@Sulthan指出,“子类是真正的解决方案。”
子类应该是这样的:
class ButtonWithValue : UIButton {
var value : Int? // note that this could be any Type.
}
然后你实例化,并更新你的sender参数类型ButtonWithValue
。处理程序在里面你检查sender.value
你不能选择通过值,使用下面的方法使用UIbutton
标记可以传递int值。
button.tag = 5
button.addTarget(self, action: #selector(acceptBiometrics(_:)), for: .touchUpInside)
功能
@objc func acceptBiometrics(_ sender: UIbutton){
print(sender.tag) //Output 5
}