2012-10-14 99 views
3

我有一個NSMutableArray完整UILabels我想通過逐步通過array來修改它們的文本屬性。我知道UILabels或者生成我想分配給標籤的文本的函數沒有問題,因爲我已經在數組之外測試了它,並且它工作正常。我似乎無法得到text屬性修改而UILabel是在一個數組內。修改NSArray中UILabels的文本屬性

我已經在陣列填充如下:

NSMutableArray *scrambledWordLabelArray; 

-(void)initUIArrays { 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel1 atIndex:0]; 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel2 atIndex:1]; 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel3 atIndex:2]; 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel4 atIndex:3]; 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel5 atIndex:4]; 
    [scrambledWordLabelArray insertObject:ScrambledWordLabel6 atIndex:5]; 
} 

然後,一旦視圖加載其應該更改標籤由其它函數生成的字符串:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self initUIArrays]; 

    currentGameList = [self GetWordList:[self LoadWordlist]]; 

    for (NSUInteger i = 0; i < [currentGameList count]; i++) { 

對於這一部分,我發現兩種解決方案,都不適合我...

解決方案1:

  UILabel *temp = [scrambledWordLabelArray objectAtIndex:i]; 
     temp.text = [self ScrambleWord:[currentGameList objectAtIndex:i]]; 

解決方案2:

  [[scrambledWordLabelArray objectAtIndex:i] setText:[self ScrambleWord:[currentGameList objectAtIndex:i]]]; 
    } 
} 

任何幫助將不勝感激,因爲我一直在研究和調試,沒有固定:(

回答

2

你不初始化scrambledWordLabelArray小時。您需要添加下面一行:

scramledWordLabelArray = [[NSMutableArray alloc] init]; 

在一個側面說明:

難道currentGameList和scrambledWordLabelArray將始終具有相同數目的元素?您的'for'循環基於currentGameList中元素的數量,但您使用相同的索引從scrambledWordLabelArray獲取元素。

您發佈的兩種解決方案基本上都是相同的代碼。

+0

我正要寫我自己......(如果OP沒有在其他地方初始化'NSMutableArray',那是......) –

+0

Bah!而已!原來我是這樣說的,我第一次聲明數組的時候,它告訴我這不是一個編譯時間常量,當我把數組的數量返回時,我返回了6,所以我認爲該對象在那裏。非常感謝你! – Hobbit