我可以添加属性值迅速给选择?

问题描述 投票:0回答:2

我一直在全国各地念叨选择,现在想知道是否有一种方法我怎么能为功能属性选择器发送的值。

我有一个方法:

@objc func acceptBiometrics(newValue: Int){
}

和选择:

#selector(acceptBiometrics(newValue:))

那么,有没有一种方法,我可以送让说1作为新的价值,这样我就可以有两个选择调用相同的功能,只是不同的价值?

编辑1:我那么这个选择发送一些视图控制器与一个按钮创建自己的警报视图控制器。因此,选择被调用在一个完全不同的视图控制器。难道这样做,则还发送VC也是我想与选择送价值的唯一途径?没有一种方法,我可以做类似#selector(self.acceptBiometrics(NEWVALUE:1))

ios swift selector
2个回答
2
投票

你不知道。

您可以使用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


1
投票

你不能选择通过值,使用下面的方法使用UIbutton标记可以传递int值。

button.tag = 5
button.addTarget(self, action: #selector(acceptBiometrics(_:)), for: .touchUpInside)

功能

@objc func acceptBiometrics(_ sender: UIbutton){
    print(sender.tag) //Output 5
}
© www.soinside.com 2019 - 2024. All rights reserved.