在按钮目标 Swift 的选择器方法中更改两个对象

Posted

技术标签:

【中文标题】在按钮目标 Swift 的选择器方法中更改两个对象【英文标题】:Changing two objects in the selector method for button target Swift 【发布时间】:2021-06-01 03:26:48 【问题描述】:
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】:

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

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

【讨论】:

以上是关于在按钮目标 Swift 的选择器方法中更改两个对象的主要内容,如果未能解决你的问题,请参考以下文章

swift - 在UITableView中选择单元格时如何更改按钮名称?

UIButton 动画忽略 Swift 中的目标选择器

如何在不创建新内容的情况下更改 UIPicker 的内容?

从 Swift 中的属性检查器列表更改条形按钮图像

使用Swift语言自动在日期选择器中选择日期

Swift 自定义图片选择器(三) -- 图片展示界面