2009-08-10 418 views
0

好吧,我有8個標籤,我想通過它們循環但沒有運氣。通過標籤循環iPhone SDK

這是我試過的。

for (int i; i = 0; i < 10; i++) 
{ 
    double va = [varible1.text doubleValue] + i; 
    int j = 0 + I 

    label(j).text= [[NSString alloc]initWithFormat:@"%2.1f", va]; 
} 

這個錯誤了。我的標籤是這樣命名的label0,label1,label2

任何幫助,將不勝感激。

回答

2

你也許應該所有的標籤添加到C數組,大概在-viewDidLoad

UILabel* labels[] = { label0, label1, label2, ... }; 

(不能完全肯定有關語法) 然後像

labels[i].text = ... 

訪問他們順便說一句,我覺得你在這裏泄漏內存:

labels[i].text = [[NSString alloc]initWithFormat:@"%2.1f", va]; 

initWithFormat:將返回保留計數爲1的字符串。labels [i] .text將再次保留該值。設置標籤文本後,應釋放字符串。我可能只是自動釋放在這裏:

labels[i].text = [[[NSString alloc]initWithFormat:@"%2.1f", va] autorelease]; 

或使用stringWithFormat(它返回一個自動釋放的字符串):

labels[i].text = [NSString stringWithFormat:@"%2.1f", va]; 
+0

工作很好。謝謝。 – 2009-08-10 19:05:48

3

label(j)並不等同爲label0,LABEL1等

您應該創建標籤的一個NSArray,那麼你就可以[arrayOfLabels objectAtIndex:j]訪問它們。如果你不知道這意味着什麼,請閱讀NSArray的文檔...

0

如果您不能或不想把你的標籤在一個數組,你可以使用標記字段作爲索引遍歷UIViews。您可以將索引編號存儲在其中(通過IB或編程方式),然後使用以下命令獲取每個標籤:(UIView *)viewWithTag:(NSInteger)標籤。

見下文(集theView到您的標籤駐留在該視圖):

for (int i; i = 0; i < 10; i++) 
{ 
    double va = [varible1.text doubleValue] + i; 

    UILabel * label = [theView viewWithTag: i]; 
    label.text= [[NSString alloc]initWithFormat:@"%2.1f", va]; 
} 
1
for (UILabel *lbl in self.view.subviews) 
    {  
     [lbl setFont:[UIFont fontWithName:@"AppleGothic" size:22]]; 
    } 

它會只是給標籤標籤更改所有的標籤在你的ViewController。

+0

答案很好,解釋了爲什麼/你做了什麼更好的答案。請在回答中提供更多信息,而不僅僅是源代碼。 – Manuel 2013-07-15 10:18:03