2014-10-30 72 views
1

我的問題是 - 我怎麼修改喜歡的backgroundColor,每個標籤的文字顏色任何顏色如何修改標籤的顏色IBOutletCollection

IBOutletCollection(UILabel) NSArray *smallLabels 

我什麼都試過訪問使用索引數組中的每個元素。在我來說,我有10個標籤,每個標籤具有其編號從1到10

所有我做過到目前爲止在連接每個標籤的IBOutletCollection,但我有一個線索,我從來沒有在我的初始化數組碼。

在此先感謝。

+0

請問 - (無效)awakeFromNib方法調用? – Astoria 2014-10-30 08:48:58

+1

將數組作爲IBOutletCollection使用時,它會自動初始化並填充視圖。您應該能夠像viewDidLoad一樣訪問它,就像所有其他網點一樣。 – Imotep 2014-10-30 08:59:59

+0

Astoria, 是的,但我沒有在那裏放任何代碼。爲什麼? – xdevx 2014-10-30 09:02:17

回答

1

請試試這個

for (UILabel *myLabel in self.smallLabels) 
{ 
    myLabel. backgroundColor = [UIColor greenColor]; 
} 
+0

現在我所有的標籤都是綠色的。非常感謝 ! – xdevx 2014-10-30 09:16:55

+0

爲了清楚起見,你用[[_smallLabels objectAtIndex:1] backgroundColor]得到的錯誤是,當你從一個NSArray獲得一個對象時,它就是一個id。由於id對象沒有backgroundColor屬性,編譯器會引發錯誤。通過使用foreach而不是經典的for,你告訴編譯器你期望的對象是UILabel,它具有backgroundColor屬性。你也可以像這樣解決這個問題:[((UILabel *)[_ smallLabels objectAtIndex:1])backgroundColor] – Imotep 2014-10-30 09:21:25

+0

當你告訴IB這是UILabel的集合,它只會允許你爲這個集合添加標籤,所以你不必檢查課程。 – Imotep 2014-10-30 10:00:45

0

好吧。我一直在思考整個一天,Finnaly找到了最適合我的解決方案。 正如我所說的,我需要訪問每個元素,而不是整個數組。

代碼:

[[_smallLabels objectAtIndex:1] setBackgroundColor:[UIColor greenColor]];