-1

我正在寻找一种仅更改具有相同文本的按钮的背景颜色的方法。所以我创建了(此时只有 2 个)IBOutletCollections 和 1 个 IBAction 来测试。但是我有 27 个不同的按钮编号要编码……还是我需要创建 27 个 Outlet Collections 和 27 个 Actions?

class SecondViewController: UIViewController {


@IBOutlet var button1color: [UIButton]!
@IBOutlet var button2color: [UIButton]!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}


@IBAction func bouton1(_ sender: UIButton) {
    for button in self.button1color {
        if button.backgroundColor == nil {
        button.backgroundColor = UIColor(displayP3Red: 1, green: 1, blue: 0.5, alpha: 0.8)
        } else {
            button.backgroundColor = nil
        }
    }

}

有没有办法创建一个函数来避免为每种情况输入 27 次相同的代码?

欲了解更多信息,请随时问我!

谢谢您的帮助。

4

1 回答 1

2

我正在寻找一种仅更改具有相同文本的按钮的背景颜色的方法

我是这样理解的:您需要按钮集合,并且当按下该集合中的某个按钮时,您想要更改集合中具有相同文本的所有按钮的颜色(我们谈论时的标题UIButton


因此,所有按钮都可以只有一个集合。将它们链接到此集合

@IBOutlet var buttons: [UIButton]!

在此处输入图像描述

你也可以对所有按钮只进行一项操作。还将它们链接到此操作。然后当按下按钮时,更改与按下backgroundColor的按钮具有相同标题的按钮

@IBAction func buttonPressed(_ sender: UIButton) {
    for button in buttons where button.currentTitle == sender.currentTitle {
        button.backgroundColor = UIColor(displayP3Red: 1, green: 1, blue: 0.5, alpha: 0.8)
    }
}

在此处输入图像描述

于 2019-01-04T19:59:18.587 回答