在这里搜索问题 This 但并没有完全解决我的问题。
问题在于我在UIScrollView中有大约100个按钮,根据服务器的响应,我必须突出显示按钮(即服务器发送给我" Button_Unique_Id":" Button_ABC_1")。现在问题是如何创建一个具有唯一标识符" Button_ABC_1"的UIButton,这样当我从服务器获得响应时,我可以使用Button_Unique_Id值识别我的按钮并对其进行更改按钮。
button.tag = index
这种方法失败了,因为我无法识别具有价值的按钮" Button_ABC_1"
我很感激最好的回应。
答案 0 :(得分:1)
Just create subclass of UIButton
and add id
instance variable whatever type you want. Good Luck!
EDIT
class MyButton: UIButton {
var id : String?
}
Usage:
let btn = MyButton(type: .custom)
btn.id = "MY_BUTTON_ID"
Something like that.
答案 1 :(得分:1)
在Dictionary
([String : UIButton]
)中保留对按钮的引用,并将这些字符串用作键,然后只需要求它就可以获得相应的按钮:
let buttonOfInterest = buttons["Button_ABC_1"]
答案 2 :(得分:1)
您可以使用Button.tag = integerValue
按钮存储整数值。
您可以管理这些数据的数组,并使用按钮标记绑定该数组。
答案 3 :(得分:0)
enum ButtonIdentifier: String {
//you could name the enum as ButtonMapper
//let the case be same as server response string
case button_abc_0
case button_abc_1
case button_abc_2
var id: int {
//fetch the id from the server response string & return - here fetch the integer from the rawValue.
//Or else you have to use the switch for returning the id which is not feasible when you have 100s of data - better to extract from the response string
}
guard let buttonIdentifier = ButtonIdentifier (rawValue: serverResponceString) else { return }
使用forEach循环,您可以一次标记(整数值)按钮
updateButton(with tag: buttonIdentifier.id)