-3

所以我有一堆动态加载的标签..

他们每个人都有相同的名字,因为不知道会有多少..

我有另一种方法(不是创建标签的方法)更改其中一个标签的文本,但是当我运行它时,只有创建的最后一个标签会改变..

我需要它来更改具有特定标签或其他东西的那个..

非常感谢帮助,这个网站还没有让我失望。

4

2 回答 2

2

self.myLabel 不能连接多个标签,所以它会包含上次创建标签的引用,你必须每次创建新标签,你不能通过类属性跟踪它们,你必须通过它们的标签访问标签.

您可以为每个标签设置标签,下面是示例代码,

 for(int i=0; i< numberOfLabels; i++)
{
    UILabel *label = [[UILabel alloc] init];
    label.tag = i; // do not use tag 0 here.. u can use i+1, or i+100.. something like this.
    [self.view addSubview:label];
}

访问标签,

UILabel *label = (UILabel*)[self.view viewWithTag: labelTag];
于 2012-07-20T11:53:45.550 回答
2

好的,因为您没有任何代码可以显示,我想我必须推测一下。

我的理解是你正在用你的UILabels代码创建动态并且你想访问它们。UILabels由于您的所有名称都相同,因此UILabel每次创建新的UILabel. 因此,为了跟踪UILabel您创建的数量,您必须将它们添加到数组中。NSMutableArray在你的文件中声明一个viewController.h并确保在viewDidLoad你分配它就像

arrForLabels = [[NSMutableArray alloc]init];

因为它是一个NSMutableArray你可以添加对象到它。

所以当你创建一个UILabel确保你UILabel数组中添加相同的实例时

[arrForLabels addObject:yourLabel];

您可以尝试查看NSLog您的数组以查看其内容。

现在你要做的就是创建一个这样的薄弱环节

UILabel *tempLabel = [arrForLabels objectAtIndex:1];

现在tempLabel将是UILabel更改文本

tempLabel.text = @"My New Text";

它会正常工作。随意询问其中的任何问题。

于 2012-07-20T11:56:41.973 回答