在一个NSArray中修改UILabel的文本属性

3

我有一个NSMutableArray,它充满了UILabels,我想通过遍历array来修改它们的文本属性。我知道这不是UILabels或生成要分配给标签的文本的函数的问题,因为我已经在数组外部测试过了,而且它可以正常工作。只是我似乎无法在UILabel位于数组中时修改文本属性。

我已经如下填充了数组:

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]]];
    }
}

任何帮助都将不胜感激,因为我已经花了几个小时进行研究和调试,但没有找到解决方法 :(
1个回答

2
您没有初始化scrambledWordLabelArray。需要添加以下行:
scramledWordLabelArray = [[NSMutableArray alloc] init];

顺便提一下:

当前游戏列表和混淆单词标签数组的元素数量总是相同的吗?您的“for”循环基于当前游戏列表中的元素数量,但您使用相同的索引从混淆单词标签数组中获取元素。

您发布的两个解决方案基本上是相同的代码。


我正要自己写那个...(以防万一,如果 OP 没有在其他地方初始化 NSMutableArray 的话...) - Dr.Kameleon
啊!就是这样!最初我在声明数组的地方,但它告诉我它不是编译时常量,当我取数组的计数时,它返回了6,所以我认为对象已经在里面了。非常感谢! - Hobbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接