更改按钮目标 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”的选择器方法,它将按钮作为发送者。但是,我还需要增加/减少标签。有没有办法选择器方法可以同时将按钮和标签作为参数?

我尝试过

@objc func tap(sender: UIButton) {
   sender.setimage(UIImage(named:"likeImage"))
   labelArray[sender.tag].text = <The incremented number> 
}

但只有按钮图像会改变,标签不会更新。

解决方法

有没有办法选择器方法可以同时将按钮和标签作为参数?

不,没有。然而,你在问题结束时的冲动几乎是我所做的。不需要数组,只需给出匹配标签的按钮-标签对,如 1 和 101、2 和 102 等。现在查看发件人的标签,添加 100,调用 view(withTag:) 以查找标签,然后转换为标签,一切就绪。