2016-07-23 23 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個按鈕就可以編寫下面的代碼,並且它肯定會起作用。 –