在按钮目标的选择器方法中更改两个对象 Swift
Changing two objects in the selector method for button target Swift
let buttonArray: [UIButton] = [UIButton]()
let labelArray: [UILabel] = [UILabel]()
// Inside some function
func {
// Create these UI
for (index, num) in numberOfButtonsNeeded.enumerated() {
let button = UIButton()
button.tag = index
button.addTarget(self, action: #selector(self.tap(sender:)), for: .touchUpInside)
buttonArray.append(button)
let label = UILabel()
label.text = "hi"
labelArray.append(label)
}
}
...
@objc func tap(sender: UIButton) {
sender.setImage(UIImage(named:"likeImage"))
}
我目前正在创建点赞按钮和标签以显示该评论的点赞数量。
这个按钮和标签的数量显然取决于数据库中评论的数量,所以我在加载数据后以编程方式创建这些按钮和标签。
但是,当我为按钮按下赞时,我需要标签也随之改变。对于按钮目标,我们有一个名为“Tap”的选择器方法,它将按钮作为发送者。但是,我还需要 increment/decrement 标签。选择器方法是否可以将按钮和标签都作为参数?
我试过
@objc func tap(sender: UIButton) {
sender.setImage(UIImage(named:"likeImage"))
labelArray[sender.tag].text = <The incremented number>
}
但只有按钮图像会发生变化,标签不会更新。
Is there a way the selector method can take both the button and the label as parameters?
不,没有。不过,你题末的冲动,跟我差不多。不需要数组,只需给出匹配标签的按钮标签对,如 1 和 101、2 和 102 等等。现在查看发件人的标签,加100,调用view(withTag:)
找到标签,向下转换为标签,就大功告成了。
let buttonArray: [UIButton] = [UIButton]()
let labelArray: [UILabel] = [UILabel]()
// Inside some function
func {
// Create these UI
for (index, num) in numberOfButtonsNeeded.enumerated() {
let button = UIButton()
button.tag = index
button.addTarget(self, action: #selector(self.tap(sender:)), for: .touchUpInside)
buttonArray.append(button)
let label = UILabel()
label.text = "hi"
labelArray.append(label)
}
}
...
@objc func tap(sender: UIButton) {
sender.setImage(UIImage(named:"likeImage"))
}
我目前正在创建点赞按钮和标签以显示该评论的点赞数量。 这个按钮和标签的数量显然取决于数据库中评论的数量,所以我在加载数据后以编程方式创建这些按钮和标签。
但是,当我为按钮按下赞时,我需要标签也随之改变。对于按钮目标,我们有一个名为“Tap”的选择器方法,它将按钮作为发送者。但是,我还需要 increment/decrement 标签。选择器方法是否可以将按钮和标签都作为参数?
我试过
@objc func tap(sender: UIButton) {
sender.setImage(UIImage(named:"likeImage"))
labelArray[sender.tag].text = <The incremented number>
}
但只有按钮图像会发生变化,标签不会更新。
Is there a way the selector method can take both the button and the label as parameters?
不,没有。不过,你题末的冲动,跟我差不多。不需要数组,只需给出匹配标签的按钮标签对,如 1 和 101、2 和 102 等等。现在查看发件人的标签,加100,调用view(withTag:)
找到标签,向下转换为标签,就大功告成了。