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

时间:2019-05-19 01:42:37

标签: uibutton nsarray iboutletcollection

如何将属性设置为包含“ UIButtons”的“ IBOutletCollection”的“扩展名”?我正在尝试以一种类似于扩展UIButton的方式来执行此操作,该扩展似乎并未扩展到UIButton的集合。我希望尽可能的透彻和清晰。

尽管有类似的问题:

1。Change the color of UIButton in IBOutletCollection

2。Set Individual Title of UIButtons in IBOutletCollection

...还有无数其他人。我仍然不知道如何做到这一点,可以真正使用任何人都可以提供的帮助。

这是我到目前为止收集的内容:

  1. IBOutletCollection始终是NSArray。
  2. 使用循环循环遍历数组的内容。

这是我的代码示例:(我尝试用“ NSArray”和“ Collection”替换“ Array”的位置,而“ 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()

我肯定不是专家编码员,我们将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

经过反复尝试,我终于找到了解决方案。我想与需要在 IBOutletCollection 中将属性设置为 UIButtons 的任何人共享答案。当您要为一组按钮或项目范围内的所有按钮设置/定义属性时,这是一种减少时间的非常有效的方法。

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

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

//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”。感觉!

再见!