[英]How to send string data to UIButton tag?
有沒有辦法將字符串值發送到UIButton
標簽? 我知道tag
是Int類型,但我需要發送字符串值。
let myButton: UIButton = {
let button = UIButton()
button.tag = "123"
return button
}()
我需要將button.tag
作為字符串發送
您可以使用accessibilityLabel
來代替標簽。
btn.accessibilityLabel = "ABC"
創建 UIButton 的自定義類並創建一個String
類型的屬性,如customTag
class CustomButton: UIButton {
var customTag:String = ""
}
將自定義類分配給您的 UIButton 並通過以下代碼使用字符串類型標記。
let myButton: CustomButton = {
let button = CustomButton()
button.customTag = "ABC"
return button
}()
再來一個答案。
代替accessibilityLabel
/ accessibilityIdentifier
或任何其他與可accessibility
相關的,讓我們去layer.name
Button.layer.name = "abc123"
@IBAction func wasPressed(_ sender: UIButton) {
print("was Pressed \(sender.layer.name)")
}
原因:
以防萬一,我們需要為每個屏幕設置可訪問性,那時它可能會影響。
但是,如果我們需要為UIButton
添加另一層,它不會影響
不幸的是,標簽只是一個整數值。 你可以做的是:
UIButton
並添加您自己的屬性accessibilityIdentifier
只需創建UIButton
或NSObject
的extension
。
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)
如果你創建一個
NSObject
的extension
strCustomTag
可以從任何類或任何 UI 元素訪問,例如UIButton
、UITextField
、UIView
等。無需更改現有的
storyboard
或XIB
文件
無法將標簽設置為 String,因為它的類型是 Int。
很可能您無論如何都不需要設置它,因為使用 UIView 的標簽不是一種常見的技術。
如果您仍想使用類似的解決方案(我建議不要),那么您可以使用 String 的accessibilityIdentifier
屬性。
您還可以使用自定義 String 屬性創建 UIButton 的自定義子類,並使用此自定義子類而不是 UIButton
您可以為按鈕創建自定義類,然后您可以通過在自定義類中定義屬性來傳遞任何類型的值。
示例:我想在 Button 中傳遞 String 和 Int 這兩個值,所以我將 Int 傳遞給按鈕標簽,字符串將傳遞給自定義按鈕屬性。
class CustomButton: UIButton {
var stringToPass: String = ""
}
視圖控制器類
class HomeVC: UIViewController {
let customButton = CustomButton()
override func viewDidLoad() {
super.viewDidLoad()
customButton.stringToPass = "Your String"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.