Swift:将属性设置为包含 UIButton 的 IBOutletCollection 的扩展

Swift: Set properties to an Extension of IBOutletCollection containing UIButtons

如何将属性设置为包含 "UIButtons" 的 "IBOutletCollection" 的 "extension"?我正在尝试以与扩展 UIButton 类似的方式来执行此操作,但它似乎并未扩展到 UIButton 的集合。我希望尽可能彻底和清楚。

虽然有类似的问题:

1.Change the color of UIButton in IBOutletCollection

2.Set Individual Title of UIButtons in IBOutletCollection

...以及其他许多人。我仍然没有掌握如何做到这一点,并且真的可以使用你们任何人提供的帮助。

这是我目前收集到的:

  1. IBOutletCollection 始终是 NSArray。
  2. 使用 for-in-loop 遍历数组的内容。

这是我的代码示例:(我尝试将“Array”所在的位置替换为:“NSArray”和“Collection”,其中“Collection”的工作方式类似于“Array”)

//Inside the main viewController:

@IBOutlet var ButtonCollection: [UIButton]!
//Inside the extention file:

extension Array where Element == UIButton
{
    func sharedButtonProperties()
    {
        for button in ButtonCollection
        {
            self.setTitleColor(.red, for: .normal)
           //MARK: More properties will go here, once I get this to work. 
        }
    }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonCollection.sharedButtonProperties()

下面是一个 UIButton 的单个 IBOutlet 的扩展示例,它工作正常,但不适用于 Collection:

//Inside the main viewController:

@IBOutlet weak var ButtonSingle: UIButton?
//Inside the extention file:

extension UIButton
{
    func buttonProperties()
        {
            self.setTitleColor(.red, for: .normal)
        }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonSingle?.buttonProperties()

我肯定不是专家编码员,非常感谢提供的任何帮助。

谢谢。

经过反复试验,我终于找到了解决方案。我想与任何需要在 IBOutletCollection 中将属性设置为 UIButtons 的人分享答案。当您想要 set/define 属性到一组按钮或所有按钮 project-wide 时,这是一种非常有效的方式来减少时间。

我真的希望有人觉得这很有用!

代码(已测试且有效):请注意,粗体 中的内容是我所讨论的代码的变化。

//Inside the main viewController

@IBOutlet var ButtonCollection: [UIButton]!
//Inside the extention file:

extension Array where Element == UIButton
{
    func sharedButtonProperties()
    {
        for **buttonGrp** in **self**
        {
            **buttonGrp**.setTitleColor(.red, for: .normal)
           //MARK: More properties will go here now! 
        }
    }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonCollection.sharedButtonProperties()

如你所见:我几乎已经弄明白了,但所需要的只是为“for-in-loop”调用“buttonGrp”,并将其设置为“self”。我希望这很有道理!

再见!