好我的问题:
我有创建标签的功能:
- (void)crateBall:(NSInteger *)nummer {
UILabel *BallNummer = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)];
BallNummer.text = [NSString stringWithFormat:@"%i", nummer];
[self.view addSubview:BallNummer];
}
现在我想在其他功能中访问标签以更改文本,框架等。
这些标签的数量是动态的,所以我不想在.h文件中声明每个标签。 (我不是指数字.text = 123我的意思是视图中的标签数量)
答案 0 :(得分:4)
为了您的目的,所有UIView子类都具有整数tag
属性
- (void)crateBall:(NSInteger *)nummer {
UILabel *BallNummer = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)];
BallNummer.text = [NSString stringWithFormat:@"%i", nummer];
BallNummer.tag = *nummer;
[self.view addSubview:BallNummer];
[BallNummer release];
}
稍后您可以使用-viewWithTag:
函数获取此标签:
UILabel *ballNummer = (UILabel*)[self.view viewWithTag:nummer];
P.S。当你将指向int的指针传递给你的函数时(你真的需要这样做吗?)你应该在使用它之前取消引用它:
BallNummer.text = [NSString stringWithFormat:@"%i", *nummer];
P.P.S。不要忘记发布标签你的创建(我已经将代码添加到我的代码中) - 你的代码泄漏内存
答案 1 :(得分:0)
您可以使用UIView
'标签属性标记您的子视图,并创建一个功能来访问您之后的标签
- (void)createLabels {
UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)];
label.tag = 1;
[self.view addSubview:label];
label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)];
label.tag = 2;
[self.view addSubview:label];
//etc...
}
-(UILabel*) getLabel:(NSInteger) index {
return [self.view viewWithTag:index];
}