是否可以将字符串值发送到UIButton
标签?
let myButton: UIButton = {
let button = UIButton()
button.tag = "ABC"
return button
}()
我需要以字符串形式发送button.tag
答案 0 :(得分:4)
创建一个自定义的UIButton类,并创建一个String
类型的customTag
类型的属性
class CustomButton: UIButton {
var customTag:String = ""
}
通过以下代码将自定义类分配给您的UIButton并使用String类型标记。
let myButton: CustomButton = {
let button = CustomButton()
button.customTag = "ABC"
return button
}()
答案 1 :(得分:1)
您可以使用accessibilityLabel
来代替标签。
btn.accessibilityLabel = "ABC"
答案 2 :(得分:0)
不幸的是,标记只是一个整数值。 您可以做的是:
UIButton
并添加自己的媒体资源accessibilityIdentifier
答案 3 :(得分:0)
由于类型为Int,因此无法将标签设置为String。
由于使用UIView的标记不是一种常见的技术,因此您很有可能无需设置它。
如果您仍然想使用类似的解决方案(建议不要),则可以使用accessibilityIdentifier
属性,它是String。
您还可以使用自定义String属性创建UIButton的自定义子类,并使用此自定义子类代替UIButton
答案 4 :(得分:0)
只需创建extension
或UIButton
中的NSObject
。
extension NSObject {
private struct AssociatedKeys {
static var DescriptiveName = "strCustomTag"
}
var strCustomTag: String? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.DescriptiveName) as? String
}
set {
if let newValue = newValue {
objc_setAssociatedObject(
self,
&AssociatedKeys.DescriptiveName,
newValue as NSString?,
.OBJC_ASSOCIATION_RETAIN_NONATOMIC
)
}
}
}
}
请参阅下面的代码来设置strCustomTag
let myButton: UIButton = {
let button = UIButton()
button.strCustomTag = "ABC"
return button
}()
获得价值
print(view.strCustomTag)
如果您创建的
extension
中的NSObject
strCustomTag
可从任何类或任何UI元素(例如UIButton
,UITextField
,UIView
等无需更改现有的
storyboard
或XIB
文件
答案 5 :(得分:0)
一个答案。
让我们代替accessibilityLabel
/ accessibilityIdentifier
或与accessibility
相关的其他任何东西,而让我们继续layer.name
Button.layer.name = "abc123"
@IBAction func wasPressed(_ sender: UIButton) {
print("was Pressed \(sender.layer.name)")
}
原因:
以防万一,我们需要为每个屏幕设置可访问性,这可能会影响到它。
但是,如果我们需要为UIButton
添加另一层,则不会影响