【问题标题】:Change a UIButton's image that was created programmatically within a for loop Swift更改在 for 循环 Swift 中以编程方式创建的 UIButton 的图像
【发布时间】:2021-08-17 19:43:37
【问题描述】:

我在 for 循环中创建了一个 UIButton,因为这些按钮的数量取决于数据库中的某个数字。但是,我必须在单击后更改此按钮的图像,这不起作用。

我所做的是我尝试持有这些按钮的数组并尝试访问这样的按钮,我认为这不起作用。

let buttonArray: [UIButton] = [UIButton]()

...extra code

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)

}
... 

@objc func tap(sender: UIButton) {
   DispatchQueue.main.asnyc{
   buttonArray[sender.tag].setImage(UIImage(named:"Somename"))
 }
}

我可以使用轻击手势,但不会重置此按钮的图像。有没有办法可以访问该按钮?我不认为这个数组有效。

【问题讨论】:

  • 定义您的条款。 numberOfButtonsNeeded 是什么?

标签: ios swift uibutton uikit uitapgesturerecognizer


【解决方案1】:

这是可疑的:

 @objc func tap(sender: UIButton) {
     DispatchQueue.main.asnyc{
     buttonArray[sender.tag].setImage(UIImage(named:"Somename"))
 }

您已经在主队列中,并且发送者是被点击的按钮。所以你不需要数组。

@objc func tap(sender: UIButton) {
     sender.setImage(UIImage(named:"Somename"))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2015-04-13
    • 2015-12-09
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多