2016-07-23 27 views
2

因此,我在单个viewcontroller上有20个UI按钮。我还有2个其他按钮可以改变这些按钮不同组的当前标题或背景颜色。 (例如,按这两个按钮中的一个将改变其他十个按钮的颜色,而按另一个按钮将改变这些按钮中的15个的背景。)斯威夫特。使用IBOutlet更改多个UIButtons

我是否注定要创建20个不同的IBOutlets :

@IBOutlet weak var button1:UIButton!

@IBOutlet weak var button2:UIButton!

@IBOutlet weak var button3:UIButton!

,然后不必编写附加的25行的:

button1的.setTitleColor(UIColor.redColor(),forState:。正常()

BUTTON2 .setTitleColor(UIColor.redColor() ,forState:。正常()

BUTTON3 .setTitleColor(UIColor.redColor(),forState:。正常()

当然那里有一个更简单的方法来做到这一点我不能链接一个以上的用户界面?使用IBOutlet,并且更改按钮的标签也不会做太多事情无论如何,我仍然需要将织物写下25次。

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

+2

您可以使用一个参考的出口集合(阵列IBOutlet中)而不是单个的IBOutlets – Paulw11

+0

我该如何改变数组中的所有对象? [UIButton]类型没有setTitleColor属性。对不起,我在这方面有点新鲜。 – BossGiveMeArrays

+2

您需要遍历数组并在每个按钮上设置标题颜色。 – Paulw11

回答

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() 
    } 
} 

对于斯威夫特

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) 
      } 
     } 
    } 
+0

我想执行.setTitleColor命令后用户按下一个按钮,将颜色更改为红色。我将有另一个按钮将这些按钮更改为蓝色,另一个更改这些按钮的背景颜色。您是否可以通过将这3个按钮放在其他20个按钮的“父视图”中,然后写出后续代码来完成这些操作? – BossGiveMeArrays

+0

无需在其他20个按钮的“父视图”上放置3个不同的按钮。我的理解是,有一个视图包含20个带有标签串联的按钮和3个不同的按钮,用于更改20个按钮的颜色。所以只需点击这3个按钮就可以编写下面的代码,并且它肯定会起作用。 –