迅速。使用IBOutlet更改多个UIButton

时间:2016-07-23 12:46:35

标签: ios swift uibutton iboutlet

所以,我在一个viewcontroller上有20个UI按钮。我还有另外两个按钮,它们将改变这些按钮的不同组的当前标题或背景颜色。 (例如,按下其中一个按钮将改变其他10个按钮的颜色,而按下另一个按钮将改变其中15个按钮的背景。)

我注定要创建20个不同的IBOutlet,如:

@IBOutlet weak var button1:UIButton!

@IBOutlet weak var button2:UIButton!

@IBOutlet weak var button3:UIButton!

然后不得不再写25行:

button1!.setTitleColor(UIColor.redColor(),forState:.Normal()

button2!.setTitleColor(UIColor.redColor(),forState:.Normal()

button3!.setTitleColor(UIColor.redColor(),forState:.Normal()

当然有一种更简单的方法吗?我无法通过IBOutlet链接多个UI,更改按钮的标签也不会做太多事情,因为无论如何我仍然需要写下25次这样的事情。

是否可以将这些按钮分组,我可以编写一行代码来更改该组中的所有内容?

1 个答案:

答案 0 :(得分:3)

将按钮标签设置为101到125之间的串行按钮,然后单击任何按钮执行此操作

for(UIButton *button in <parent view of buttons>.subviews){
   if(button.tag >= 101 && button.tag <= 125){
      button.setTitleColor(UIColor.redColor(), forState: .Normal()
   }
}

对于Swift

for subview in self.createBugView.subviews {

     if let button = subview as? UIButton {
        // this is a button
       if(button.tag >= 101 && button.tag <= 125){      
             button.setTitleColor(UIColor.red, for: .normal)
            }
        }
     }